我想通过一个包含列名的变量来订购data.table:
我已经尝试了eval / get / c的每个组合而没有成功:
我有colVar = 'someColumnName'
我想将其应用于:DT[order(colVar)]
答案 0 :(得分:24)
data.table
具有特殊功能,可以通过引用修改数据集,而不是将其复制到新对象。
您可以使用setkey
或(在版本> = 1.9.4中)setorder
,它也可以按递减顺序排序。
请注意setkey
与setkeyv
和setorder
与setorderv
之间的差异。 v
指出您可以传递带引号的变量名称或包含一个变量的变量。
使用@andrewzm数据集
dtbl
# x y
# 1: 1 5
# 2: 2 4
# 3: 3 3
# 4: 4 2
# 5: 5 1
setorderv(dtbl, colVar)[] # or `sekeyv(dtbl, colVar)[]` or `setorderv(dtbl, "y")[]`
# x y
# 1: 5 1
# 2: 4 2
# 3: 3 3
# 4: 2 4
# 5: 1 5
答案 1 :(得分:8)
您可以对数据表使用双括号:
library(data.table)
dtbl <- data.table(x = 1:5, y = 5:1)
colVar = "y"
dtbl_sorted <- dtbl[order(dtbl[[colVar]])]
dtbl_sorted