【问题标题】:How can I have the diagonal and reverse diagonal crossing a point in a 2D matrix?如何让对角线和反向对角线穿过 2D 矩阵中的一个点?
【发布时间】:2014-03-22 07:01:54
【问题描述】:

我有以下矩阵(本身),我想找到它的对角线和给定其中任意点的反向对角线。我可以想到算法,但我不确定什么 R 函数可以帮助我实现它。就像我知道如何访问所有穿过该点的行和列一样,所以我想也许还有一个技巧可以找到对角线。我想最终将每个对角线保存在一个向量中。

x = matrix(data=c(
  "E","E","o","4","E","E","E",
  "E","E","m","5","E","E","E",
  "E","E","n","5","E","E","E",
  "E","E","e","5","E","E","E",
  "E","E","e","4","E","E","E",
  "E","E","r","E","E","E","E"
), nrow=6, ncol=7, byrow=TRUE)

r=3
c=5

row=x[3,]
col=x[,5]
reverse_diagonal=x[i,j] in which (i+j==3+5)
diagonal=x[i,j] in which (i-j==3-5)

【问题讨论】:

    标签: r matrix diagonal


    【解决方案1】:

    对角线:

    x[row(x) - col(x) == r - c]
    # [1] "o" "5" "E" "E" "E"
    

    反对角线:

    x[row(x) + col(x) == r + c]
    # [1] "E" "e" "5" "E" "E" "E"
    

    我建议您运行以下命令以了解其工作原理:

    row(x)
    col(x)
    row(x) - col(x)
    row(x) - col(x) == r - c
    x[row(x) - col(x) == r - c]
    

    【讨论】:

      猜你喜欢
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 2023-03-25
      相关资源
      最近更新 更多