2

我有一个简单的函数脚本,最后一行是调用函数

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 命令访问我的函数,然后手动输入“fun()”

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

但我想把它变成一步交易。

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

谢谢

4

1 回答 1

4

当您直接在控制台中键入内容时,R 默认情况下会调用print该对象以显示它。但它只直接在控制台中执行此操作。

print.eval = TRUE调用时尝试设置source。要查看发生了什么,请使用以下脚本尝试两种方式:

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它。如果你在采购时想要这种行为,你必须这么说。

于 2012-06-17T21:45:17.187 回答