如何将 mapply 与列表一起使用
How to use mapply with lists
我想这样使用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
我该如何解决?
提前致谢!
检查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
returns 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)
我想这样使用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
我该如何解决?
提前致谢!
检查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
returns 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)