我对Reduce
功能有疑问。
例如,我有一个列表,其中一个元素有一个NA
。
a<-list(c(1,2),c(2,2),c(1,NA))
我希望使用Reduce
函数来平均列表中的元素。
即(1+2+1)/3=1.33
和(2+2+NA)/3 = NA
但在最后一种情况下,我真正需要的是避免使用NA,因此结果应为(2+2)/2 = 2
,因此最终结果为向量{ {1}}
我正在使用1.33, 2
,但由于NA元素,我得到Reduce("+", a)/length(a)
。
提前致谢
答案 0 :(得分:9)
我不会使用Reduce
。无论如何,它只是一个隐藏的for
循环。这是一个更好的选择:
rowMeans(do.call(cbind, a), na.rm = TRUE)
#[1] 1.333333 2.000000
这会将您的矢量合并到一个矩阵中,并使用rowMeans
函数计算行的均值,这可以删除NA
个值。