【发布时间】:2020-11-01 13:42:27
【问题描述】:
我有一个用例,我想将命令行args 评估为函数名称。例如,
r_script.R print --number 2
这里以r包docopt为例。参数通常由其自己的名称索引,例如args$print 指的是字符串值"print"。实际的 R 代码只是,
if (args$print){
if (args$number){
# call print()
print(as.numeric(args$number))
}
}
当我有一长串像print 这样的函数时,我会写一个庞大的if-else-loop 来处理它,它很快就会变得乏味。
有没有办法,例如使用quosure、eval 或类似的方法来替换此逻辑,这样我只需编写几行代码即可完成工作?
例如,理想的逻辑是,
func_enquo -> enquo(args$func) # func is in place of `print`
func_enquo(value) # what matters is the print argument here.
我通过编写包装函数尝试了enquo,但它不起作用;我尝试了eval_tidy,但无济于事(代码无效。)
【问题讨论】:
标签: r function tidyverse expression-evaluation