从 purrr 的 pmap() 调用 var() returns NA

Calling var() from purrr's pmap() returns NA

我正在尝试使用 purrr 包中的 pmap() 来简化我的代码。

我有一个向量列表x;所有向量的长度都相同。我想找到列表中所有向量的所有第 n 个元素的均值和方差。也就是说,我想要所有第一个元素的均值和方差,所有第二个元素,依此类推。

tidyverse 之前,我会将 x 转换为矩阵并使用 apply().

x <- list(1:10, 1:10, 1:10)
x_matrix <- do.call(cbind, x)
apply(x_matrix, 1, mean)
##  [1]  1  2  3  4  5  6  7  8  9 10
apply(x_matrix, 1, var)
##  [1] 0 0 0 0 0 0 0 0 0 0

pmap() 应该在没有矩阵转换的情况下允许这样做。 pmap_dbl()可以代替上面的apply()mean()计算

library(purrr)
pmap_dbl(x, mean)
##  [1]  1  2  3  4  5  6  7  8  9 10

但是,我无法使 pmap_dbl()var() 以及计算正常工作。我得到每个差异的 NA

pmap_dbl(x, var)
##  [1] NA NA NA NA NA NA NA NA NA NA

我错过了什么?

我们可以使用~然后用...获取元素,然后应用函数

pmap_dbl(x, ~ var(c(...)))

行为不同的原因是 meanvar 中的参数数量不同。在mean中,对象x之后,其他参数进入...,而在var中,不是这样,有x,有y