假设我有下三角矩阵,即
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
?
答案 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)]