Как отфильтровать data.table на основе значений столбца, в котором имя столбца хранится в переменной - PullRequest
1 голос
/ 06 мая 2020

Допустим, у меня есть data.table, как показано ниже -

DT = data.table('Col1' = c(NA, 100), 'Col2' = letters[1:2])

Теперь я хочу отфильтровать это DT, для которого Col1 равно NA. Однако Col1 хранится в переменной -

Col_Name = 'Col1'
DT[is.na(Col_Name)]
### Empty data.table (0 rows and 2 cols): Col1,Col2

Есть идеи, почему я получаю 0 строк?

Однако, если я это сделаю

DT[is.na(Col1)]

, я получаю правильный результат.

Что не так с первым подходом?

Любой указатель будет очень признателен.

Спасибо,

1 Ответ

0 голосов
/ 06 мая 2020

Вы находитесь в типичном примере стандартной задачи оценки. С data.table довольно легко обрабатывать имена переменных. В вашем случае get отлично справляется с этой задачей

DT[is.na(get(Col_Name))]

См. сообщение в блоге Я писал на тему SE против NSE в data.table

...