【问题标题】:How to replace lower/upper triangular elements of a matrix?如何替换矩阵的下/上三角元素?
【发布时间】:2012-08-29 10:45:03
【问题描述】:

我的问题:

Amat <- diag(4)

我想用我选择的值(例如NA)替换Amat 的所有下三角值(即Amat[2,1]Amat[3,1]Amat[3,2] 等)。

显然我不想一个一个地替换每个元素。

您能告诉我使用单个命令最有效的方法吗?

【问题讨论】:

    标签: r


    【解决方案1】:

    这在upper.tri 的文档中有很好的记录。

    Amat[upper.tri(Amat)] <- NA
    Amat
    #      [,1] [,2] [,3] [,4]
    # [1,]    1   NA   NA   NA
    # [2,]    0    1   NA   NA
    # [3,]    0    0    1   NA
    # [4,]    0    0    0    1
    

    当然,Amat[lower.tri(Amat)] &lt;- NA 也可以将下三角形转换为NAs。

    【讨论】:

    • 当然,如果您想对下三角形执行相同操作,请将 upper.tri 替换为 lower.tri
    • 该评论应该真正成为您答案的一部分。
    • @Andrie,完成。我想既然他们要求上或下,一个就足够了。但我想总是最好更具体而不是假设。
    • 可以不显示下三角吗? .用 NULL 替换 NA 不起作用。
    • @Anusha,将输出包装在as.table 中会抑制NA 值的打印。
    【解决方案2】:

    lower.triupper.tri 是您要找的吗?

    这些函数在 R 基础中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-17
      • 1970-01-01
      相关资源
      最近更新 更多