我想创建一个来自val %in% c(3,4)
的表达式,以传入data.table中的查询,其中c(3,4)
是一个动态向量。
我试过了:
var = "val"
value = c(3,4)
s = substitute(x := ifelse(x %in% y, 1, 0),
list(x = as.symbol(eval(var)),
y = as.symbol(eval(value))))
但结果是:
`:=`(val, ifelse(val %in$% `3`, 1, 0))
即。只显示向量的第一个元素。
如果不采用as.symbol(paste())
方式,这样做会更优雅。 bquote也不起作用。
修改:的
我意识到任何动态矢量都可以通过名称传递给data.table中的查询表达式。即val %in% value
有效。所以我的问题已经解决了,但我仍然想知道是否有办法生成上面的表达式。