对于具有任意列数的任意矩阵或数据框x
,我想这样做:
x=x[order(x[,1], x[,2], ..., x[,ncol(x)]),]
也就是说,我想按第一列排序,然后按第二列排序,......,然后按最后一列排序。关于排序here的扩展讨论似乎不包含解决方案。这是我的解决方案,违反了fortune(106)
:
sortarray = function(x){
k = ncol(x)
com = paste("x = x[order(x[,", paste(1:k, collapse = "],x[,"), "]),]", sep = "")
eval(parse(text = com))
return(x)}
x = sortarray(x)
这似乎工作正常,但是没有更清洁的方法吗?
编辑重复数据删除说明:此问题与其suggested duplicate的重要方式不同(至少对我而言)。上一个问题涉及您明确说明要排序的列的情况。在我的例子中,我希望自动选择列(特别是所有列),而不是我必须在排序命令中键入每个列名。下面的答案解决了我的问题,不像上一个问题的任何答案。
答案 0 :(得分:4)