4

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

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])
}
4

2 回答 2

7

使用 的多元等效项sapply,即mapply。在下面的代码中,该函数c应用于每个testand的第一个元素vec,然后是第二个元素,等等......

test = mapply(c, test, vec)
于 2012-11-13T16:15:35.453 回答
1

您总是可以将 for 循环转换为 lapply/apply/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]))
于 2012-11-13T21:20:08.143 回答