У меня был случай использования, когда я хотел оценить командную строку 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
или подобных методов заменить этот logi c таким образом, чтобы я мог просто написать всего несколько строк кода, чтобы выполнить работу?
Например, идеальным logi c было бы,
func_enquo -> enquo(args$func) # func is in place of `print`
func_enquo(value) # what matters is the print argument here.
Я пробовал enquo
, написав функцию-оболочку, и это не сработало; Я попробовал eval_tidy
, но безрезультатно (код недействителен).