使用purrr的pmap()调用var()返回NA。

3
我正在尝试使用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

我错过了什么?

1个回答

4
我们可以使用 ~ 然后使用 ... 获取元素,并应用函数。
pmap_dbl(x, ~ var(c(...)))

不同的行为是由于meanvar中参数数量的差异造成的。在 mean 中,对象x之后,其他参数会输入...,而在var中则不是这样,有xy等参数。

1
哈!回答得比我刷新得快(也比SO允许我接受答案的速度快)。我知道~的存在。我应该知道...的。 - Richard Herron

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接