我正在寻找一个功能,用户可以输入自己的模型选择功能作为要使用的输入.我无法找到答案,因为我不断获得有关如何创建简单R函数的搜索结果,而不像应用系列那样输入.
这是一个类似于我正在寻找但不完全的例子:
simple<- function(mod, FUN){
switch(FUN,
AIC = AIC(mod),
BIC = BIC(mod))
}
simple(lm(rnorm(100) ~ rnorm(100,4)), "AIC")
Run Code Online (Sandbox Code Playgroud)
上面的代码运行但我必须计划所有可能的功能并在switch中写入它们.我也被迫写"AIC"而不是简单的AIC.
有关如何创建我正在寻找的功能的任何想法?如果您需要其他信息,请与我们联系.
像这样的东西:
simple<- function(mod, FUN){
FUN <- match.fun(FUN)
FUN(mod)
}
simple(lm(rnorm(100) ~ rnorm(100,4)),FUN = "BIC")
Run Code Online (Sandbox Code Playgroud)
match.fun接受函数,符号或字符,因此FUN参数的传递方式有一定的灵活性.
传递多个函数的选项,如注释中所述:
simple <- function(mod, FUN){
FUNS <- lapply(FUN,match.fun)
lapply(FUNS,function(fun) fun(mod))
}
Run Code Online (Sandbox Code Playgroud)