有一个矩阵 N x N,我想以对角线形式遍历这个矩阵并返回索引位置。
如果我有一个 4x4 矩阵,代码应该返回 (1,1); (1,2); (2,1); (1,3); (2,2); (3,1); (1,4); (2,3); (3,2); (4,1);等等
我正在尝试在 R Studio 中执行此操作
最佳答案
1) row(m) + col(m)
沿着反向对角线是恒定的,并且在反向对角线内我们按行排序:
m <- matrix(1:16, 4, 4) # test matrix
m[order(row(m) + col(m), row(m))]
## [1] 1 5 2 9 6 3 13 10 7 4 14 11 8 15 12 16
2) 不像 (1) 那样紧凑,但这里有一个变体,它使用相同的原理,但使用 outer
和回收而不是 row
和列
:
k <- nrow(m)
m[ order(outer(1:k, 1:k, "+") + 0:(k-1)/k) ]
## [1] 1 5 2 9 6 3 13 10 7 4 14 11 8 15 12 16
关于r - 如何遍历对角条状矩阵并返回每个位置的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046441/