r - 如何根据列名存储在变量中的列值过滤 data.table
问题描述
假设我有一个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)]
我得到了正确的结果。
第一种方法有什么问题?
任何指针将不胜感激。
谢谢,
解决方案
您是标准评估问题的典型示例。data.table
处理变量名非常容易。在你的情况下,get
完美地完成了这项工作
DT[is.na(get(Col_Name))]
请参阅我写的关于 SE 与 NSE 主题的博文data.table
推荐阅读
- c# - 使用 LINQ 遍历数组并使用每个位置的值
- python - 使用 contextlib contextmanager 忽略并记录错误
- r - R - 如何根据时间创建直方图,以从我的表中更改值?
- c - 在具有多个客户端的同一主机上进行多播
- angular - SyncFusion ejTreeGrid - 删除滚动条
- html - HTML表单发布方法提交错误
- python-2.7 - 更新 Tkinter 中 Menubutton Checkbuttons 的标签
- javascript - 加载资源失败,服务器响应状态为 500(内部服务器错误)webmethod
- javascript - 当我将组件从无状态转换为有状态时,没有及时读取数据;
- android - 改造 2:第 1 行第 1 列路径 $ 的输入结束