我想以这种方式使用 mapply:
result<-mapply(sum,c(1,2,3),c(list(1,2),list(3,4),list(5,6)))
并获得以下内容:
result
[[1]]
2 3
[[2]]
5 6
[[3]]
8 9
但我得到了:
Result
2 4 6 5 7 9
我该如何解决?
提前致谢!
答案 0 :(得分:2)
检查 c(list(1,2),list(3,4),list(5,6))
的输出
c(list(1,2),list(3,4),list(5,6))
#[[1]]
#[1] 1
#[[2]]
#[1] 2
#[[3]]
#[1] 3
#[[4]]
#[1] 4
#[[5]]
#[1] 5
#[[6]]
#[1] 6
这是一个长度为 6 的列表。这可能不是您想要的。你想要的结构是:
list(c(1,2),c(3,4),c(5,6))
#[[1]]
#[1] 1 2
#[[2]]
#[1] 3 4
#[[3]]
#[1] 5 6
还有 sum
返回 1 个数字,要获得预期的输出,您应该使用 +
代替。
Map(`+`,c(1,2,3),list(c(1,2),c(3,4),c(5,6)))
#[[1]]
#[1] 2 3
#[[2]]
#[1] 5 6
#[[3]]
#[1] 8 9
对于 mapply
,您必须使用 SIMPLIFY = FALSE
来维护列表结构。
mapply(`+`,c(1,2,3),list(c(1,2),c(3,4),c(5,6)), SIMPLIFY = FALSE)