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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何基于R中另一个矩阵的值生成矩阵相关的知识,希望对你有一定的参考价值。

假设我有较低的三角矩阵,即

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

答案

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

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

另一答案

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

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

以上是关于如何基于R中另一个矩阵的值生成矩阵的主要内容,如果未能解决你的问题,请参考以下文章

如何将矩阵 R 放入循环中并生成矩阵 R> 的新值> [关闭]

labview怎么提取一幅图像rgb值,最后生成三个矩阵,每个矩阵里分别存放R,G,B的值

数学-线性代数导论-#11 基于矩阵A生成的空间:列空间行空间零空间左零空间

r语言如何生成矩阵偶数

将矩阵中的列向量复制到opencv中另一个矩阵的每个列中

R语言中的一类分类。生成混淆矩阵时我做错了啥?