【发布时间】:2018-05-18 17:55:55
【问题描述】:
我正在尝试使用 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
我错过了什么?
【问题讨论】: