使用“source”会中断函数的返回

时间:2012-06-17 21:36:24

标签: r

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

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”来自动提取我的脚本。如果我尝试使用源

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

我放弃了输出。我仍然得到了readline,但是我松开了返回数据,所以我得到了这个:

This is a test

如果删除最后一行,我仍然可以使用source命令访问我的函数,然后手动输入“fun()”

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

但我想这是一个一步的交易。

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

由于

1 个答案:

答案 0 :(得分: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。如果你在采购时想要这种行为,你必须这样说。