【问题标题】:for loop with if statement to compare matrices and fill new matrix带有 if 语句的 for 循环比较矩阵并填充新矩阵
【发布时间】:2021-05-24 10:59:13
【问题描述】:

我有两个矩阵,矩阵 A 和矩阵 B (5 x 5)。 我将 0 到 4 之间的值随机分配给矩阵 A。

现在,例如,我想检查 A[1,2] > A[2,1]。如果这是真的,我想为 B[1,2] 和 B[2,1] 分配一个特定的值。 在这种情况下,它应该是 B[1,2] = 3 和 B[2,1] = 0。 如果 A[1,2]

我正在寻找一个 R 代码以循环执行此操作,以使用正确的值 0,1 或 3 完全填充矩阵 B。

非常感谢任何帮助!非常感谢您!

如果R的结果是矩阵A,那么矩阵B应该看起来像自己绘制的矩阵。

【问题讨论】:

  • 嗨 student_s,欢迎来到 Stack Overflow!也许为了让这个问题更清楚一点,你可以提供一个例子......也许是一个更小的(3x3?)矩阵,代表 A 和 B,所以总的来说你想要完成的事情更明显。现在我不知道你想要什么,例如 B[2,3] 或 B[3,2] 的样子。此外,for 循环很棒,但您可以查看 R 中的 apply 函数系列,对于此类问题,这些通常非常有效(在 R 中)。
  • 非常感谢您的快速回复。我添加了两张图片,希望让它更具视觉效果。我想模拟足球比赛。事实上,矩阵A应该代表进球数,矩阵B应该代表每支球队根据矩阵A中的进球得分。我希望这也有助于澄清我的问题。
  • 如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。图片不是共享数据/代码的正确方式。

标签: r loops if-statement matrix


【解决方案1】:

我们可以这样做

> `diag<-`(3 * (A > t(A)) + 1 * (A == t(A)), NA)
     [,1] [,2] [,3]
[1,]   NA    3    0
[2,]    0   NA    1
[3,]    3    1   NA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2021-07-11
    • 2013-01-19
    • 1970-01-01
    相关资源
    最近更新 更多