使用“源”破坏功能
问题描述:
我有一个简单的脚本函数的返回,最后一行其中是调用函数使用“源”破坏功能
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
它。如果你在采购时想要这样的行为,你必须这样说。