2017-05-16 73 views
0

这似乎非常像一个愚蠢的问题:我不明白为什么我在下面的示例中得到错误。在返回值传递给save()作为参数之前,R不应该评估rnorm()吗?为什么它能与一个对象,而不是一个函数一起工作?如何在R中传递函数返回值作为参数

> ls() 
character(0) 
> save(rnorm(30), file="/tmp/RtmppMIFFg/data.RData") 
Error in save(rnorm(30), file = "/tmp/RtmppMIFFg/data.RData") :  
object ‘rnorm(30)’ not found 
> a <- rnorm(30) 
> save(a, file="/tmp/RtmppMIFFg/data.RData") 
> class(rnorm(30)) 
[1] "numeric" 
> class(a) 
[1] "numeric" 
+1

“save”('...')的第一个参数取得要保存的对象的名称。为了保存结果,您必须为其分配一个名称。 – lmo

+0

'save'中的关键代码行是'names < - as.character(substitute(list(...)))[ - 1L]',这意味着任何传递给'...'的值都被转换为一个字符串最终会和'get'一样被用于实际检索对象。 – Benjamin

回答

0

这是一个清晰的“唔”时刻:RTFM。保存不包括对象本身,只包含它们的名称。 lmo基本上提供了答案。

相关问题