2017-05-16 19 views
0

これは非常に愚かな質問のようです。以下の例でエラーが表示される理由はありません。戻り値が引数としてsave()に渡される前に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は基本的に答えを提供しました。

関連する問題