2016-08-18 211 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