我想data.frame
按多列对 a 进行排序,理想情况下使用没有任何外部包的基本 R(尽管如有必要,就这样吧)。已阅读如何按列对数据框进行排序?,我知道我可以使用该order()
功能完成此操作,只要我:
- 知道每一列的明确名称。
- 有一个单独的对象表示要排序的每个单独的列。
但是,如果我只有一个包含多个列名且长度事先未知的向量怎么办?
假设向量被称为sortnames
。
data[order(data[, sortnames]), ]
不起作用,因为order()
将其视为单个排序参数。
data[order(data[, sortnames[1]], data[, sortnames[2]], ...), ]
当且仅当我指定确切正确数量的 sortname 值时才会起作用,我不会提前知道。
我看过但并不完全满意的事情:
eval(parse(text=paste("data[with(data, order(", paste(sortnames, collapse=","), ")), ]")))
. 也许这很好,但我已经看到很多人讨厌使用eval()
,所以寻求替代品似乎是值得的。- 我也许可以使用
Deducer
库来做到这一点sortData()
,但就像我说的,我宁愿避免使用外部包。
如果我对不使用外部软件包过于固执,请告诉我。我会挺过来的。提前感谢所有想法!