如何基于R中另一个矩阵的值生成矩阵

时间:2018-03-01 15:03:22

标签: r matrix

假设我有下三角矩阵,即

w1 <- c(0,0.6,0.3,0.6,0.7,
    0,0,0.6,0.6,0.7,
    0,0,0,0.6,0.6,
    0,0,0,0,0.7,
    0,0,0,0,0)
w1 <- matrix(w1,5,5)

然后,我希望第二个矩阵是一个下三角矩阵,比如w2,其中w2的每个非零值都是1-the corresponding values of w1

像这样:

w2 <- c(0,0.4,0.7,0.4,0.3,
    0,0,0.4,0.4,0.3,
    0,0,0,0.4,0.4,
    0,0,0,0,0.3,
    0,0,0,0,0)
w2 <- matrix(w2,5,5) 
w <- list(w1, w2)

如何自动获取w2

2 个答案:

答案 0 :(得分:1)

由于R中的大多数操作都是矢量化的,因此您只需使用ifelse减去1 - w1,或者如果w1为零,则保留为零。

ifelse(w1 == 0, 0, 1 - w1)

答案 1 :(得分:1)

您也可以在左侧使用lower.tri()的索引:

w2new <- matrix(0, dim(w1)[1], dim(w1)[2])
w2new[lower.tri(w2new)] <- 1 - w1[lower.tri(w1)]