我有一个方形矩阵,我知道它可以通过排列变成三角形,什么是Matrix ::函数调用来获得三角形?
我有B作为
B <- matrix(c(0,5,6,1,2,3,0,0,9),3,3)
并希望获得一个呈现结果的函数
B[,c(2,1,3)]
答案 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
根据连续零的数量(从顶行向下计数)对矩阵的列进行排序,首先是最短的零序列。