【问题标题】:Sum values in matrix with R (only above diagonal)用 R 对矩阵中的值求和(仅在对角线上方)
【发布时间】:2021-08-08 11:45:33
【问题描述】:

我有一个 50 行 50 列的矩阵:

[,1] [,2] [,3]...[,50]
[1,]    1    0.8    0.7
[2,]    0.8    1    0.5
[3,]    0.7    0.5    1
...
[50,]

我想将 0.02 的值相加到对角线以获得如下结果:

[,1] [,2] [,3]...[,50]
[1,]    1    0.82    0.72
[2,]    0.8    1    0.52
[3,]    0.7    0.5    1
...
[50,]

有谁知道如何使用 R 仅在矩阵对角线以上的值中求和?

矩阵码示例:

matrix <- as.matrix(data.frame(A = c(1, 0.8, 0.7), B = c(0.8, 1, 0.5), C = c(0.7, 0.5, 1)), nrow=3, ncol=3)

【问题讨论】:

  • 如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。避免在示例中使用“...”,因为这样我们就无法复制/粘贴进行测试。此外,您不需要所有 50 列和行进行测试。只需几行即可制作一个漂亮的完整矩阵。
  • 另外,看看?upper.tri

标签: r arrays matrix sum


【解决方案1】:

尝试upper.tri,如下所示

matrix[upper.tri(matrix)] <- matrix[upper.tri(matrix)] + 0.02

【讨论】:

    【解决方案2】:

    您可以在 R 中使用 lower.tri(m)upper.tri(m) 函数。其中 m 是您的矩阵。

    m = matrix(1:36, 6, 6)
    m[upper.tri(m)] = m[upper.tri(m)] + 0.02
    m
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 2023-03-25
      • 2017-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多