给定R中的一个表达式字符串,例如Species == 'setosa' & Petal.Length > 1.5
,您可以使用dplyr
中的!!
将该表达式传递给过滤器语句.
exp_string = rlang::parse_expr("Species == 'setosa' & `Petal.Length` > 1.5")
filtered_data <- iris |> filter(!!exp_string)
但当将其转换为data.table
时,过滤会失败,并以多种方式抱怨.
iris_dt <- setDT(copy(iris))
iris_dt[exp_string] # i has evaluated to type language
iris_dt[!!exp_string] # invalid argument type
那么,将过滤语句传递给R中的data.table
的正确方式是什么呢?