我在列表中有一个可变长度的向量和一个向量,有点像这样:
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
的函数?
答案 0 :(得分:1)
这与以前的问题非常相似,后者使用Map
或mapply
对两个相同长度的列表/向量进行串联操作:
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