在R中按照所有列对数据框进行排序

3

对于任意列数的矩阵或数据框x,我想做到这一点:

x=x[order(x[,1], x[,2], ..., x[,ncol(x)]),]

也就是说,我想按第一列排序,然后按第二列排序,......,最后按最后一列排序。在这里有关于排序的详细讨论,但似乎没有解决方案。以下是我的解决方案,虽然它违反了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)

这个方法似乎可以正常工作,但有没有更简洁的方法?

去重说明编辑:这个问题与建议的重复问题有一个重要的区别(至少对我来说)。之前的问题处理的情况是你明确声明要按哪些列排序。而在我的情况下,我希望自动选择列(具体来说,是全部列),而不是我必须在排序命令中输入每个列名。下面的答案解决了我的问题,而不像之前问题的任何答案。


似乎是关于代码审查的内容。http://codereview.stackexchange.com/ - undefined
1个回答

7

不错!根据问题标题给出解决方案的信用,但请注意,如果x是一个矩阵,这种方法也不适用,正如OP所要求的那样。 - undefined
3
如果输入是一个矩阵,使用 as.data.frame 进行转换。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接