使用“源”破坏功能

问题描述:

我有一个简单的脚本函数的返回,最后一行其中是调用函数使用“源”破坏功能

fun<-function(){ 
    readline("This is a test") 
    x<-c(4,5) 
    y<-c(5,6) 
    add<-x+y 
    sub<-x-y 
    return(list(add,sub)) 
} 

fun() 

如果我复制到我的[R控制台这个我得到了什么是预计

This is a test 
[[1]] 
[1] 9 11 

[[2]] 
[1] -1 -1 

但我一直在尝试使用“源”来自动拉起我的脚本。如果我尝试使用来源

source("/Users/Me/Desktop/R.test.R") 

我松了我的输出。我仍然得到readline的,但我失去了返回的数据,所以我只是得到这样的:

This is a test 

我仍然可以使用source命令来访问我的功能,如果我删除最后一行,然后手动键入“乐趣( )“

source("/Users/Me/Desktop/R.test.R") 
fun() 

但我想这是一步到位的交易。

有人可以解释为什么“剪切和粘贴”与使用源代码之间的区别,以及我如何使用源代码在一个步骤中调用我的函数?

感谢

当你默认调用print该对象上,以显示其类的东西直接在控制台中,R。但它只能在控制台中直接进行。

当您拨打source时尝试设置print.eval = TRUE。要看看发生了什么,请使用以下脚本尝试两种方法:

fun<-function(){ 
    readline("This is a test") 
    x<-c(4,5) 
    y<-c(5,6) 
    add<-x+y 
    sub<-x-y 
    return(list(add,sub)) 
} 

fun() 

x <- 5 
x 

现在更清晰一点。只要在控制台上输入x就会导致R到print它。如果你在采购时想要这样的行为,你必须这样说。