Среднеквадратичное значение в R

В R у меня есть два вектора:

a <- c(1, 2, 3, 4)
b <- c(NA, 6, 7, 8)

Как найти среднее по элементам два вектора, удалив NA, без цикла? т.е. я хочу получить вектор

(1, 4, 5, 6)

Я знаю функцию mean(), я знаю аргумент na.rm = 1. Но я не знаю, как соединить вещи. Разумеется, на самом деле у меня тысячи векторов с NA, появляющихся в разных местах, поэтому любое зависящее от размера решение не будет работать. Спасибо.

Ответ 1

как насчет:

rowMeans(cbind(a, b), na.rm=TRUE)

или

colMeans(rbind(a, b), na.rm=TRUE)

Ответ 2

Я не совсем уверен, что вы просите, но

apply(rbind(a,b),2,mean,na.rm = TRUE)

делать то, что вы хотите?

Ответ 3

Решение 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