我猜它是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
答案 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