【发布时间】:2014-08-22 00:11:52
【问题描述】:
我在列表中有一个可变长度的向量和一个向量,有点像这样:
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-like 函数?
【问题讨论】:
-
Map("+",x,y)会做到的。 -
我只是想先找出这是否是重复的,因为我确信我之前已经回答过类似的问题 - 它与 stackoverflow.com/questions/24945339/… 基本相同,但应用了不同的功能。也非常类似于:stackoverflow.com/questions/12215785/…
-
你是对的,但我认为即使答案相同,提出不同的问题也有一定的价值。在寻找与我类似的问题时,我没有遇到这些。对于第二个,我不会想到应用该解决方案。
-
Map是mapply("+", x, y)的包装器