我正在尝试将字符串作为公式求值:
在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),也不是列表列。
答案 0 :(得分:1)
可以使用parse_expr
代替eval(parse
dt[, b := eval(parse(text = expr))]
或者在eval
在parse_expr
中进行求值时,在!!
上用tidyverse
换行
dt[, b := eval(rlang::parse_expr(expr)) ]