2016-08-18 11 views
-1

私はそうのようなリストのリストで指定された要素を変更しようとしています: ループを通ると、変更リスト要素

for(e in A) e$a <- 10 

は、なぜこれがまだ保持ん:要素を変更する

A <- list(list(a=1,b=1),list(a=2,b=2)) 
A[[1]]$a == 1 

てみてください本当ですか?

A[[1]]$a == 1 

ではなく、この:

A[[1]]$a == 10 

また、何が実際に各.$a要素に10を割り当てるために推奨される方法でしょうか?

+3

あなたは10と1としてではなく、「」要素を持っている '(Aにおけるe)のために' 'たぶん – akrun

+4

を修正されていませんfor a(e in 1:length(A)){A [[e]] $ a < - 10} '? –

+1

あなたは友達に感銘を与えることができます。 'lapply(A、" [[< - "、" a "、10)' –

答えて

5

あなたのコードは、あなたが思う通りです。この場合:一時変数eが新しい、独立したオブジェクトではなく、A内の対応する要素への参照であるため、

for (e in A) { 
    e$a <- 10 
} 

これは、動作しません。あなたが望むものを達成するために

簡単な方法は、次のようになります。

for (i in 1:length(A)) { 
    A[[i]]$a <- 10 
} 
+0

私はseq_along – mgcdanny

関連する問題