在我的工作中,我经常将变量列表称为一个字符向量。
A <- data.table(var1 = 1:10, var2 = 11:20, var3 = 21:30)
vecvar <- c("var1", "var2", "var3")
只要有可能,我想使用vecvar
而不是枚举变量,因为这使得我的代码对于将来的应用程序更加健壮,而且变量列表略有不同。
我最近发现data.table
,尽管我喜欢语法和效率提升的一般优雅,但我发现它与我上面提到的倾向有点冲突。实际上,A[, vecvar]
将不起作用。
我尚未决定解决此问题的最佳方法。
A[, vecvar, with=F]
可以使用,但并不总是方便(例如A[, list(vecvar, var1+var2), with=F]
无效)。
A[, sapply(vecvar, get)]
不起作用,但A[, sapply(vecvar, function(x) get(x))]
会。
我没有陷入困境,因为我有办法处理它 - 我只是想知道在我养成坏习惯之前,最好的解决方法是什么!
答案 0 :(得分:2)
我有点明白你的意思。 FAQ 1.6有帮助吗?此外,在datatable-help上有一些关于在data.table中使用quote() - ed表达式的线程。
答案 1 :(得分:1)
这是你想要做的吗?
> subset(A, select=vecvar[1:2])
var1 var2
[1,] 1 11
[2,] 2 12
[3,] 3 13
[4,] 4 14
[5,] 5 15
[6,] 6 16
[7,] 7 17
[8,] 8 18
[9,] 9 19
[10,] 10 20