R如何替换矩阵上三角形中的NA

时间:2014-07-29 09:48:45

标签: r matrix na

我猜它是is.na函数和upper.tri函数的组合,但我无法弄清楚

说我有这样的矩阵:

#      [,1] [,2] [,3] [,4]
# [1,]    1   NA   NA   3
# [2,]    NA  1    NA   NA
# [3,]    NA  NA    1   NA
# [4,]    NA  NA   NA   NA

我想将上半部分的NA替换为0并保持下半部分I.e,

#      [,1] [,2] [,3] [,4]
# [1,]    1   0     0   3
# [2,]    NA  1     0   0
# [3,]    NA  NA    1   0
# [4,]    NA  NA   NA   0

1 个答案:

答案 0 :(得分:2)

或者

 m <- structure(c(1, NA, NA, NA, NA, 1, NA, NA, NA, NA, 1, NA, 3, NA, 
  NA, NA), .Dim = c(4L, 4L))

 m[upper.tri(m, diag=T) & is.na(m)] <- 0
  m
 #     [,1] [,2] [,3] [,4]
 #[1,]    1    0    0    3
 #[2,]   NA    1    0    0
 #[3,]   NA   NA    1    0
 #[4,]   NA   NA   NA    0