2

配列内の値を変更する関数を使用しようとしています。ここに関数があります

testReturn<-function(a){
for (i in 1:6){
a[i]<-a[i]+i
}
return(a)
}

以下が実行結果です

> a<-rep(0,6)
> testReturn(a)
  [1] 1 2 3 4 5 6
> a
  [1] 0 0 0 0 0 0

関数自体が array を正常に変更したようaです。しかし、返されたa配列は同じままです。それを正しく行う方法は?

4

1 に答える 1

2

関数の結果を に割り当てる必要がありますa

a <- testReturn(a)

@Adityaが言ったように、たとえばFortranでのサブルーチンの動作とは対照的に、Rは参照ではなく値で渡します。関数内で変更を行うとすぐにa、関数内で のコピーaが作成されます。この新しいバージョンは、機能の範囲内でのみ関連します。これを関数外の環境に渡す方法は、 を介して戻り引数を使用することreturn()です。

結果を返した後、それをグローバル環境の新しい変数に割り当てる必要があります。あなたが示した例では、オブジェクトは新しいオブジェクトに割り当てられていませんでしたが、代わりに画面に印刷されました。のグローバル値に割り当てるにはa、上記のコードを使用するだけです。

于 2013-04-01T17:44:40.603 に答える