我有两个矩阵,X1和X2,具有相同的尺寸。
X2具有NAs值。
如何将X1中的NAs值放在X2的相同位置(替换X1中的值)?
答案 0 :(得分:3)
我们可以使用replace
replace(X1, is.na(X2), NA)
# [,1] [,2] [,3]
#[1,] NA 4 7
#[2,] 2 5 8
#[3,] 3 NA 9
或者
X1 * NA^is.na(X2)
# [,1] [,2] [,3]
#[1,] NA 4 7
#[2,] 2 5 8
#[3,] 3 NA 9
或者@Roland在评论中提到
is.na(X1) <- is.na(X2)
顺便说一句,
X1 + X2 - X2
#Error in X1 + X2 : non-numeric argument to binary operator
底线是我发布的两个解决方案都是通用的,也适用于非数字矩阵。
X1 <- matrix(1:9, 3, 3)
X2 <- matrix(c(NA, "a", "b", "c", "a", NA, "c","f", "a"), 3, 3)
答案 1 :(得分:2)
你可以做到
X1[is.na(X2)] <- NA
如果数据是完全数字的,请尝试
NA
+任何数字都是NA
。您可以添加X2
然后将其减去。
X1 + X2 - X2