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

最後の行を削除して手動で「fun()」と入力すると、引き続き source コマンドを使用して関数にアクセスできます。

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

しかし、私はこれをワン・ステップ・ディールにしたいと思います。

「カット アンド ペースト」とソースの使用の違いの理由と、ソースを使用して 1 つのステップで関数を呼び出す方法を誰かが説明できますか?

ありがとう

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 に答える