R:减少功能。钠处理
R: Reduce function. Na treatment
我对 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.33, 2
我正在使用 Reduce("+", a)/length(a)
,但由于 NA 元素,我得到了 NA
。
提前致谢
我不会为此使用 Reduce
。无论如何,它只是一个隐藏的 for
循环。这是一个更好的选择:
rowMeans(do.call(cbind, a), na.rm = TRUE)
#[1] 1.333333 2.000000
这会将您的向量组合成一个矩阵,并使用 rowMeans
函数计算行均值,该函数可以删除 NA
个值。
我对 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.33, 2
我正在使用 Reduce("+", a)/length(a)
,但由于 NA 元素,我得到了 NA
。
提前致谢
我不会为此使用 Reduce
。无论如何,它只是一个隐藏的 for
循环。这是一个更好的选择:
rowMeans(do.call(cbind, a), na.rm = TRUE)
#[1] 1.333333 2.000000
这会将您的向量组合成一个矩阵,并使用 rowMeans
函数计算行均值,该函数可以删除 NA
个值。