我想通过保存列名的变量对data.table
进行排序:
我尝试了每种组合,包括+ eval、
get和
c`,但都没有成功:
我有colVar = "someColumnName"
我想将其应用于:DT[order(colVar)]
我想通过保存列名的变量对data.table
进行排序:
我尝试了每种组合,包括+ eval、
get和
c`,但都没有成功:
我有colVar = "someColumnName"
我想将其应用于:DT[order(colVar)]
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
您可以使用双括号来创建数据表:
library(data.table)
dtbl <- data.table(x = 1:5, y = 5:1)
colVar = "y"
dtbl_sorted <- dtbl[order(dtbl[[colVar]])]
dtbl_sorted
setorderv
而不是setkeyv
,但您不必接受任何建议,这是您的选择。并且,不,我不需要分数,谢谢,祝您拥有美好的一天。 - David Arenburg