m[, order(m[1, ])
упорядочит столбцы по первой строке. m[, order(m[1, ], m[2, ])]
упорядочит по первому ряду, используя второй ряд как прерыватель связи. Получив фантазию, m[, do.call(order, split(m, row(m)))]
упорядочит столбцы по первому ряду, используя все последующие строки для прерывателей связей. Это будет работать с character
данными так же, как с numeric
.
set.seed(47)
m = replicate(5, sample(1:5, 5, rep=F))
m
# [,1] [,2] [,3] [,4] [,5]
# [1,] 5 4 1 5 1
# [2,] 2 2 3 2 3
# [3,] 3 5 5 1 2
# [4,] 4 3 2 3 5
# [5,] 1 1 4 4 4
m[, do.call(order, split(m, row(m)))]
# [,1] [,2] [,3] [,4] [,5]
# [1,] 1 1 4 5 5
# [2,] 3 3 2 2 2
# [3,] 2 5 5 1 3
# [4,] 5 2 3 3 4
# [5,] 4 4 1 4 1