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
函数错误,但是我无法在备忘单上看到其他任何保留列表结构并执行操作的备忘单在该列表中的每个元素上。
谢谢。