Я пытаюсь осмыслить квазиквотацию, чтобы использовать ее вместе с вызовом data.table
. Вот пример:
library(data.table)
library(rlang)
dt <- data.table(col1 = 1:10, col2 = 11:20)
dt[, col1]
Если бы я хотел превратить это в функцию, как бы я это сделал? Я пытался:
foo <- function(dt, col) {
col <- quo(col)
expr(dt[, !!col1])
}
foo(dt, col1)
Но получите Error in enexpr(expr) : object 'col1' not found
. Я предполагаю, что мне не хватает некоторых шагов, поскольку data.table
оценивает это иначе, чем dplyr
.
substitute
, затем преобразуйте его в символ, затем используйте формат с двойной точкой для подмножества из основной таблицы данных - person Onyambu   schedule 21.10.2019foo <- function(dt, col) dt[, eval(substitute(col))]
? - person chinsoon12   schedule 22.10.2019