Data.table и символьные векторы

В своей работе я часто ссылаюсь на списки переменных как на один вектор символов.

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))] будет.

Я не зацикливаюсь, так как у меня есть способы справиться с этим - я просто хочу знать, как лучше всего с этим работать, прежде чем я подниму вредные привычки!

Ответ 1

Я понимаю, что вы имеете в виду. FAQ 1.6 help? Кроме того, было несколько потоков в datatable-help об использовании выражений quote() - ed в data.table.

Ответ 2

это то, что вы хотите сделать?

> 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