基于R中的对角位置对矩阵元素进行排序

基于R中的对角位置对矩阵元素进行排序,r,R,在我尝试编写自定义函数之前;是否有一种优雅的/本地的方法来实现这一点 m<-matrix(1:9,ncol = 3) m [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 按行: as.vector(t(m)) [1] 1 4 7 2 5 8 3 6 9 按对角线(我想要一个函数输出): 和垂直对角线: some.other.function(m) [1] 7 8 4 9 5

在我尝试编写自定义函数之前;是否有一种优雅的/本地的方法来实现这一点

m<-matrix(1:9,ncol = 3)
m
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
按行:

as.vector(t(m))
[1] 1 4 7 2 5 8 3 6 9
按对角线(我想要一个函数输出):

和垂直对角线:

some.other.function(m)
[1] 7 8 4 9 5 1 6 2 3

这里有一个非常好的解决方案,您可以根据您的问题进行调整:
some.function(m)
[1] 1 2 4 3 5 7 6 8 9
some.other.function(m)
[1] 7 8 4 9 5 1 6 2 3
ind = expand.grid(1:3, 1:3)
ind[,3] = rowSums(ind)
ind = ind[order(ind[,3], ind[,2], ind[,1]),]

m[as.matrix(ind[,1:2])]
#[1] 1 2 4 3 5 7 6 8 9

m[,3:1][as.matrix(ind[,1:2])]
#[1] 7 8 4 9 5 1 6 2 3