【问题标题】:sort matrix elements based on diagonal position in R [duplicate]根据R中的对角线位置对矩阵元素进行排序[重复]
【发布时间】:2017-12-18 19:40:58
【问题描述】:

在我尝试编写自定义函数之前;有没有一种优雅/原生的方法来实现这一点?

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

按列:

as.vector(m)
[1] 1 2 3 4 5 6 7 8 9

按行:

as.vector(t(m))
[1] 1 4 7 2 5 8 3 6 9

按对角线(我想要一个函数输出):

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

【问题讨论】:

标签: r


【解决方案1】:
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

【讨论】:

    猜你喜欢
    • 2012-08-17
    • 2016-07-22
    • 2021-08-27
    • 1970-01-01
    • 1970-01-01
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多