如何将 mapply 与列表一起使用

时间:2021-02-07 09:14:31

标签: r list mapply

我想以这种方式使用 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

我该如何解决?

提前致谢!

1 个答案:

答案 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)