【问题标题】:how to compress eval parse text into one function?如何将 eval 解析文本压缩成一个函数?
【发布时间】:2022-07-08 01:02:36
【问题描述】:

如何将一个函数从eval(parse(text='5+5'))压缩到eval2('5+5'),以免每次都写3个字而不是1个字?

我经常使用这种结构,我需要压缩它。

UPD:使情况复杂化,因为将 eval 打包到函数中不起作用,例如,对于 data.table。在这种情况下,我希望 eval(parse(text=)) 变成 eval():

dt <- data.table(a = c(1, 1, 1, 1), foo_col = c('a', 'b', 'X', 'asd'))
            
cur_col <- 'foo_col2'
            
dt[, eval(parse(text=glue::glue('{cur_col} := c(3, 3, 3, 3)')))]

【问题讨论】:

  • fortunes::fortune("parse").

标签: r


【解决方案1】:

只需围绕这些 evalparse 编写一个包装函数

eval2 <- function(txt) {
  eval(parse(text = txt))
}

eval2('5 + 5')
#> [1] 10

eval(parse(text = '5 + 5'))
#> [1] 10

reprex package (v2.0.1) 于 2022-07-07 创建

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多