Я новичок в пакете сантехника и пытаюсь выяснить, как сделать функцию доступной, fun_2
, через API, который может принимать необязательные аргументы. Необязательные аргументы имеют значения по умолчанию, указанные в функции fun_1
из пакета R. Как я могу сделать это без необходимости переопределять значения по умолчанию, указанные в fun_1
?
Я попробовал наивный подход - просто перечислить аргументы в обоих вызовах функций без значений по умолчанию, указанных в fun_2
. Но это породило ошибку отсутствующего аргумента.
Я также попытался указать значения по умолчанию в fun_2
. Это сработало, но не идеально. Я не хочу отменять значения по умолчанию, указанные в fun_1
на случай, если они изменятся в будущем. Я хочу, чтобы функция, вызываемая из API, всегда имела те же результаты, что и при прямом вызове fun_1
.
fun_1 (в упаковке R)
fun_1 <- function(x, y = c("a", "b", "c"), z = c("d", "e", "f"){
...
}
Наивный подход
#* @post /myapi
fun_2 <- function(x, y, z){
fun_1(x, y, z)
}
curl -X POST "http://localhost:8000/myapi?x=0.001"
"error":["500 - Internal server error"],"message":["Error in FUN(X[[i]], ...): argument \"y\" is missing, with no default\n"]
Это работает, но потенциально может переопределить fun_1 значения по умолчанию
#* @post /myapi
fun_2 <- function(x, y = c("a", "b", "c"), z = c("d", "e", "f"){
fun_1(x, y, z)
}