2014-02-10 69 views
0

我有一個列表將字段添加到列表

> (mylist <- list(list(a=1),list(a=2),list(a=3))) 
[[1]] 
[[1]]$a 
[1] 1 


[[2]] 
[[2]]$a 
[1] 2 


[[3]] 
[[3]]$a 
[1] 3 

的每一個元素,我想從11:13添加字段b到每個子表得到的東西像

> (mylist <- list(list(a=1,b=11),list(a=2,b=12),list(a=3,b=13))) 
[[1]] 
[[1]]$a 
[1] 1 

[[1]]$b 
[1] 11 


[[2]] 
[[2]]$a 
[1] 2 

[[2]]$b 
[1] 12 


[[3]] 
[[3]]$a 
[1] 3 

[[3]]$b 
[1] 13 

我怎樣做這個?

(請注意,我有大量這樣的相對較小的列表,因此將在apply中調用,並且必須相當快)。

+0

'lapply(mylist,function(l){l $ b <-l $ a + 10; l})'應該可以工作,只要你實際上爲每個'a'值加10。 .. – Justin

回答

1
mylist <- list(list(a=1),list(a=2),list(a=3)) 
b.vals <- 11:13 
mylist <- lapply(
    1:length(mylist), 
    function(x) { 
    mylist[[x]]$b <- b.vals[[x]] 
    mylist[[x]] 
}) 
+0

是的,這也是我想出來的,除了我用'c(b = b.vals [x],mylist [[x]])'而不是'<-'。謝謝! – sds

+0

@sds,你的方法有點乾淨。 – BrodieG