【问题标题】:R How to replace NAs in the upper triangle of a matrixR如何替换矩阵上三角形中的NA
【发布时间】:2014-07-29 09:48:45
【问题描述】:

我猜它是 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 并保留下半部分,即

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

【问题讨论】:

    标签: r matrix na


    【解决方案1】:

    或者

     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
    

    【讨论】:

      猜你喜欢
      • 2020-10-01
      • 2017-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      相关资源
      最近更新 更多