计算data.table中的表达式

时间:2019-11-22 19:18:41

标签: 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分配不是NULL,不是原子向量(请参见?is.atomic),也不是列表列。

1 个答案:

答案 0 :(得分:1)

可以使用parse_expr代替eval(parse

dt[, b := eval(parse(text = expr))]

或者在evalparse_expr中进行求值时,在!!上用tidyverse换行

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