首页 > 解决方案 > 如何根据列名存储在变量中的列值过滤 data.table

问题描述

假设我有一个data.table如下 -

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

现在我想过滤DT这个Col1NA. 但是Col1存储在一个变量中 -

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

知道为什么我得到 0 行吗?

但是,如果我这样做

DT[is.na(Col1)]

我得到了正确的结果。

第一种方法有什么问题?

任何指针将不胜感激。

谢谢,

标签: rdata.table

解决方案


您是标准评估问题的典型示例。data.table处理变量名非常容易。在你的情况下,get完美地完成了这项工作

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

请参阅我写的关于 SE 与 NSE 主题的博文data.table


推荐阅读