2012-11-13 127 views
3

我有一个简单列表和相同长度的简单向量。我想在矢量的ith元素添加到列表中的ith元素。有没有比这个for循环做得更好的方法?添加矢量的元素的列表的元素中的R

test <- list(element1=list(a=1,b=2,a1=8), 
      element2=list(a=9,d=17)) 
vec <- c(12,25) 

for (i in 1:length(test)){ 
    test[[i]] <- c(test[[i]],vec[i]) 
} 

回答

6

使用的sapply多元等效,即mapply。在下面的代码,则该函数c被施加到每个testvec,则第二元件等的第一元件...

test = mapply(c, test, vec) 
+1

感谢这么多。当我尝试乐福时,我非常亲密,但没有得到它的工作。很高兴你帮忙。 –

+0

有没有办法给出一个相同的固定名称都在所附列表中的元素?我试图让一些与'工作“的名字< - ”'和'mapply' –

+0

你必须强迫'vec'到一个名为元素的列表,那么你可以使用'lapply'和'名称<-'。例如''mapply(c,test,lapply(as.list(vec),'names <-','boo'))'' – mnel

0

可以翻译八方for循环到lapply /应用/ sapply。这里是你的代码的例子。

"for"(i, 1:length(test), test[i] <- c(test[[i]], vec[i])) 

test <- lapply(1:length(test), function(i) c(test[[i]], vec[i]))