如何通过置换找到三角矩阵

时间:2015-10-19 12:36:26

标签: r matrix

我有一个方形矩阵,我知道它可以通过排列变成三角形,什么是Matrix ::函数调用来获得三角形?

我有B作为

B <- matrix(c(0,5,6,1,2,3,0,0,9),3,3)

并希望获得一个呈现结果的函数

B[,c(2,1,3)]

1 个答案:

答案 0 :(得分:1)

您可以尝试使用

B[, order(sapply(1:ncol(B), function(x) rle(B[,x]==0)$lengths[1]*rle(B[,x]==0)$values[1]))]
#     [,1] [,2] [,3]
#[1,]    1    0    0
#[2,]    2    5    0
#[3,]    3    6    9

根据连续零的数量(从顶行向下计数)对矩阵的列进行排序,首先是最短的零序列。