34

R には、次の 2 つのベクトルがあります。

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

ループなしで NA を削除して、2 つのベクトルの要素ごとの平均を見つけるにはどうすればよいですか? つまり、ベクトルを取得したい

(1, 4, 5, 6)

私は関数を知っていますmean()、私は引数を知っていますna.rm = 1。しかし、私は物事をまとめる方法がわかりません。確かに、実際には、NA がさまざまな場所に現れる数千のベクトルがあるため、次元に依存するソリューションは機能しません。ありがとう。

4

3 に答える 3

41

どうですか:

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

また

colMeans(rbind(a, b), na.rm=TRUE)
于 2010-08-16T21:27:31.040 に答える
3

あなたが何を求めているのか正確にはわかりませんが、

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

あなたがしたいことをしますか?

于 2010-08-16T21:33:03.207 に答える
1

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
于 2019-10-14T10:15:02.107 に答える