如何按所有列排序矩阵

Car*_*oft 4 sorting r matrix

好吧,我陷入了一个愚蠢的循环中.我已经阅读了如何通过列对数据框进行排序的有用想法,但还需要一个提示.我想要一个带有任意列数的矩阵的函数,并按顺序对所有列进行排序.例如,对于foo具有N列的矩阵,相当于foo[order(foo[,1],foo[,2],...foo[,N]),].我很乐意使用withby构造,并在必要时定义colnames我的矩阵,但我无法弄清楚如何自动收集order(或with)的参数.或者,我应该说,我可以用它paste然后构建整个血腥的字符串call,但我确信有一种更简单的方法.

Hon*_*Ooi 8

最优雅(对于"优雅"的某些值)方式是将其转换为数据框,并使用do.call:

foo[do.call(order, as.data.frame(foo)), ]
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为数据框只是list具有一些相关属性的变量之一,并且可以传递给期望a的函数list.