在 R 中,我有两个向量:
a <- c(1, 2, 3, 4)
b <- c(NA, 6, 7, 8)
如何在没有循环的情况下找到两个向量的元素平均值,去除 NA?即我想得到向量
(1, 4, 5, 6)
我知道函数mean()
,我知道论据na.rm = 1
。但我不知道如何把东西放在一起。可以肯定的是,实际上我有数千个带有 NA 的向量出现在不同的地方,所以任何与维度相关的解决方案都行不通。谢谢。
怎么样:
rowMeans(cbind(a, b), na.rm=TRUE)
或者
colMeans(rbind(a, b), na.rm=TRUE)
我不确定您要的是什么,但确实
apply(rbind(a,b),2,mean,na.rm = TRUE)
做你想做的事?
tidyverse
解决方案使用purrr
:
library(purrr)
a <- c(1, 2, 3, 4)
b <- c(NA, 6, 7, 8)
# expected:
c(1, 4, 5, 6)
#> [1] 1 4 5 6
# actual:
map2_dbl(a,b, ~mean(c(.x,.y), na.rm=T)) # actual
#> [1] 1 4 5 6
对于任意数量的向量:
> pmap_dbl(list(a,b, a, b), compose(partial(mean, na.rm = T), c))
[1] 1 4 5 6