按R中的所有列对数据帧排序

时间:2013-12-23 02:12:49

标签: r

对于具有任意列数的任意矩阵或数据框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的重要方式不同(至少对我而言)。上一个问题涉及您明确说明要排序的列的情况。在我的例子中,我希望自动选择列(特别是所有列),而不是我必须在排序命令中键入每个列名。下面的答案解决了我的问题,不像上一个问题的任何答案。

1 个答案:

答案 0 :(得分:4)

x[do.call(order, x), ]

尝试执行

example(order)

在R提示符下。

此前提出的问题:

How to sort a dataframe by column(s)?