我想这样使用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我怎么才能修复它呢?
提前感谢!
发布于 2021-02-07 17:19:29
检查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)https://stackoverflow.com/questions/66086252
复制相似问题