在我尝试编写自定义函数之前;是否有一种优雅/原生的方法来实现这一目标?
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
答案 0 :(得分: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