给定一个参数列表和一个函数,我想看看我是否有一个有效的函数调用。
到目前为止我的尝试:
args_match <- function (fun, ...) {
fun_name <- deparse(substitute(fun))
safe_mc <- purrr::safely(match.call)
x <- safe_mc(fun, do.call(call, list(fun_name, ...)))
return(is.null(x$error))
}
这适用于某些功能:
> args_match(fivenum, y = 1:10)
[1] FALSE
> args_match(fivenum, x = 1:10)
[1] TRUE
但是对于带有...
参数的函数失败了:
> args_match(mean, x = 1:10)
[1] TRUE
> args_match(mean, y = 1:10)
[1] TRUE
> mean(y = 1:10)
Error in mean.default(y = 1:10) :
argument "x" is missing, with no default
有没有办法改善这个?答案可能是否定的,因为一些R函数确实不关心它们的参数是否缺失......: - /