2016-08-18 188 views
-1

我想修改命名的元素在像這樣一個列表的列表:遍歷和修改列表元素

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

嘗試修改的元素:

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

爲什麼這仍持有真正?

A[[1]]$a == 1 

而不是這個:

A[[1]]$a == 10 

而且,這將是真正分配10每個.$a元素中的建議的方法呢?

+3

你的「a」元素爲1而不是10'的(在A E)'是不正確的 – akrun

+4

也許' for(e in 1:length(A)){A [[e]] $ a < - 10}'? –

+1

或者你可以給你的朋友留下深刻的印象並且做'lapply(A,「[[< - 」,「a」,10)' –

回答

5

你的代碼不會做你認爲它的作用。在這種情況下:

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

這不起作用,因爲臨時變量e是一個新的,獨立的對象,而不是在A到相應的元素的引用。

一個快速的方法來完成你想會是什麼:

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

我用seq_along – mgcdanny