将列表列表相乘时,为什么map2不返回相似结构的列表?

时间:2019-07-09 16:00:09

标签: r tidyverse

purr函数map2在将列表内的列表相乘并分配给原始列表内的新列表时,未按预期执行。

我已经看到类似的线程在讨论这个问题(Multiplying Combinations of a list of lists in R),但似乎找不到以tidyverse方式解决这个问题的线程。

foo <- list()
foo$M <- list(1:1, 1:2, 1:3, 1:4, 1:5)
foo$N <- list(1:1, 1:2, 1:3, 1:4, 1:5)

library(tidyverse)

# returns list of sum
foo$B <- map2(foo$M, foo$N, sum)

# returns list of products but for whole list
foo$B <- map2(foo$M, foo$N, prod)

# returns NULL
foo$B <- map2(foo$M, foo$N, '*')

我想我希望列表的结构保持不变,并为lsit中的每个元素返回M * N值。但是我似乎得到的只是NULL或列表乘法的整个列表的乘积。

例如,对于foo$B <- map2(foo$M, foo$N, sum)foo$B[[5]]的实际输出为30,而我希望输出为2、4、6、8、10。

可能仅仅是我要执行的任务的purr函数错误,但是我无法在备忘单上看到其他任何保留列表结构并执行操作的备忘单在该列表中的每个元素上。

谢谢。

0 个答案:

没有答案