【发布时间】:2019-01-11 09:01:56
【问题描述】:
我想在 data.table 中用作 i 的引号(或表达式)。但这似乎是不可能的。
这是一个最小的例子:
library(data.table)
dt <- data.table(a = 1:10)
dt[a == 5,] # Everything well
dt[quote(a == 5),] # Error: i has not evaluated to logical, integer or double
dt[expression(a == 5),] # Error: i has not evaluated to logical, integer or double
i 的 data.table 状态帮助页面:
整数、逻辑或字符向量、单列数字矩阵、列名表达式、列表、data.frame 或 data.table。
所以我认为,它应该适用于表达式。我的错误是什么?或者有没有办法“取消引用”报价?
【问题讨论】:
-
为什么要在方括号内使用引号?
-
引号作为函数的参数,应该传递给data.table。该函数本身会处理引用并添加一些其他术语。
-
你能提供一个更完整的例子来说明你想要实现的目标吗?
-
用
eval()括起来expression。例如:dt[eval(expression(a == 5)),]. -
如此简单。我以为我以前尝试过,但结果向我展示了不同。非常感谢@nicola
标签: r data.table expression quote