【发布时间】:2019-08-21 07:57:48
【问题描述】:
我是管道工包的新手,我正在尝试通过一个可以接受可选参数的 api 来弄清楚如何使一个函数可用,fun_2。可选参数的默认值在 R 包中的函数fun_1 中指定。如何在不覆盖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)
}
【问题讨论】: