通过变量列名来订购data.table

时间:2014-12-10 11:31:04

标签: r variables data.table

我想通过一个包含列名的变量来订购data.table:

我已经尝试了eval / get / c的每个组合而没有成功:

我有colVar = 'someColumnName'

我想将其应用于:DT[order(colVar)]

2 个答案:

答案 0 :(得分:24)

data.table具有特殊功能,可以通过引用修改数据集,而不是将其复制到新对象。

您可以使用setkey或(在版本> = 1.9.4中)setorder,它也可以按递减顺序排序。

请注意setkeysetkeyvsetordersetorderv之间的差异。 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