如何将向量元素添加到列表中的相应向量?

时间:2014-08-22 00:11:52

标签: r list vector

我在列表中有一个可变长度的向量和一个向量,有点像这样:

set.seed(0)
x <- lapply(as.list(sample(1:10, 10, repl=TRUE)),
            function(x) sample(1:10, x, repl=TRUE))
y <- sample(1:10, 10, repl=TRUE)

我需要将y的每个元素添加到x中的相应向量中。目前我这样做是这样的:

newList <- list()

for (i in seq_along(y)) {
  newList <- c(newList, list(y[i] + x[[i]]))
}

> x[1:2]
[[1]]
[1]  1  3  2  7  4  8  5  8 10

[[2]]
[1]  4  8 10

> y[1:2]
[1] 4 8

> newList
[[1]]
[1]  5  7  6 11  8 12  9 12 14

[[2]]
[1] 12 16 18

[[3]]
[1] 13 17 12 13
...

有没有更好的方法,也许使用类似lapply的函数?

1 个答案:

答案 0 :(得分:1)

这与以前的问题非常相似,后者使用Mapmapply对两个相同长度的列表/向量进行串联操作:

How do I apply an index vector over a list of vectors?
Add respective dataframes in list together in R

对于这种特定情况,请尝试:

Map("+",x,y)

#[[1]]
#[1]  5  7  6 11  8 12  9 12 14
#
#[[2]]
#[1] 12 16 18
#
#[[3]]
#[1] 13 17 12 13