11

在我的工作中,我经常将变量列表称为一个字符向量。

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))]会。

我没有被困住,因为我有办法处理它——我只想知道在我养成坏习惯之前最好的解决方法是什么!

4

2 回答 2

3

我有点明白你的意思。FAQ 1.6 有帮助吗?此外,datatable-help 上有一些关于在 data.table 中使用 quote()-ed 表达式的线程。

于 2011-03-26T11:18:14.210 回答
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
于 2011-03-25T23:58:48.670 回答