当NA和NaN出现时,我想采用两个矩阵元素的平均值。我知道反复询问类似的问题,但NA和NaN没有。
对于NA + 1.2,期望的平均值为1.2。
elem
答案 0 :(得分:1)
用矩阵制作一个数组:
arr <- array(cbind(y1,y2), dim = c(dim(y1), 2))
然后使用colMeans
来处理缺失值(NA
或NAN
):
colMeans(aperm(arr, c(3, 1, 2)), na.rm = TRUE)
# [,1] [,2] [,3]
#[1,] -0.9094480 0.1213812 -0.152905201
#[2,] -1.2058566 -0.4537133 0.437414704
#[3,] -0.2566812 -0.8607652 0.003213122
答案 1 :(得分:1)
你没有指定你想要的平均值-1.20 + NaN。它可能是-1.2或NaN。这也不难。
如果你想要均值(-1.2,NaN)= -1.2,请使用
DO = (y1 + y2)/2
DO[is.na(y1)] = y2[is.na(y1)]
DO[is.na(y2)] = y1[is.na(y2)]
DO
[,1] [,2] [,3]
[1,] -0.9094480 0.1213812 -0.152905201
[2,] -1.2058566 -0.4537133 0.437414704
[3,] -0.2566812 -0.8607652 0.003213122
如果你想要均值(-1.2,NaN)= NaN,请使用
DO = (y1 + y2)/2
DO[!is.nan(y1) & is.na(y1)] = y2[!is.nan(y1) & is.na(y1)]
DO[!is.nan(y2) & is.na(y2)] = y1[!is.nan(y2) & is.na(y2)]
DO
[,1] [,2] [,3]
[1,] -0.9094480 0.1213812 -0.152905201
[2,] NaN -0.4537133 0.437414704
[3,] -0.2566812 -0.8607652 0.003213122