如何用条件替换具有NA的数字

时间:2016-07-28 09:30:20

标签: r matrix replace na

我有两个矩阵,X1和X2,具有相同的尺寸。

X2具有NAs值。

如何将X1中的NAs值放在X2的相同位置(替换X1中的值)?

2 个答案:

答案 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