排序矩阵行保留r中每行的列名

时间:2017-12-28 21:13:27

标签: r matrix

我有一个带有列名

的矩阵X.
names(X) <- c('a', 'b', 'c', 'd')
a b c d 
1 2 3 4 
2 7 1 5

我需要对每一行进行排序并保留列名,以便排序矩阵中的每一行都有各自的列名:

a b c d
1 2 3 4


c a d b
1 2 5 7

我尝试为每行指定名称:

for(i in 1:2) { 
  X[i,] <- sort(X[i,]) 
  names(X[i,]) <- names(sort(X[i,])) 
} 

但仍有原始列名。

1 个答案:

答案 0 :(得分:2)

mylist = lapply(1:NROW(X), function(i) X[i, order(X[i,]), drop = FALSE])
mylist
#[[1]]
#     a b c d
#[1,] 1 2 3 4

#[[2]]
#     c a d b
#[1,] 1 2 5 7

数据

X = structure(c(1L, 2L, 2L, 7L, 3L, 1L, 4L, 5L),
              .Dim = c(2L, 4L),
              .Dimnames = list(NULL, c("a", "b", "c", "d")))