R 计算data.table中的表达式

R 计算data.table中的表达式,r,data.table,R,Data.table,我尝试将字符串作为公式计算: 在dplyr中,它将如下所示: dt = data.table(a = 1:10) expr = 'sum(a)' dt %>% mutate(b := !!parse_expr(expr)) 但是,当我尝试使用data.table时,出现了一个错误: dt[, b := parse_expr(expr)] [.data.table(dt,:=(b,parse_expr(expr)))中出错: 赋值的RHS不是空的,不是一个原子向量(参见?is.a

我尝试将字符串作为公式计算:

在dplyr中,它将如下所示:

dt = data.table(a = 1:10)
expr = 'sum(a)'

dt %>% 
  mutate(b := !!parse_expr(expr))
但是,当我尝试使用data.table时,出现了一个错误:

dt[, b := parse_expr(expr)]
[.data.table
(dt,
:=
(b,parse_expr(expr)))中出错: 赋值的RHS不是空的,不是一个原子向量(参见?is.atomic),也不是一个列表列


可以使用
eval(parse
)代替
parse\u expr

dt[, b := eval(parse(text = expr))]
或者在
parse_expr
上用
eval
换行,因为
!!
正在
tidyverse

dt[, b := eval(rlang::parse_expr(expr)) ]

@R.M.使用
rlang
和tidyverse,它们使用与
!!
一致的模式,但这在tidyverse环境之外不起作用,否则您可能需要
作为映射器