在r中创建一个带有FUN输入的函数

Eva*_*and 6 r function

我正在寻找一个功能,用户可以输入自己的模型选择功能作为要使用的输入.我无法找到答案,因为我不断获得有关如何创建简单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.

有关如何创建我正在寻找的功能的任何想法?如果您需要其他信息,请与我们联系.

jor*_*ran 8

像这样的东西:

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)

  • @EvanFriedland未来解决问题的提示:您正确地知道您想要执行*apply函数所做的事情.在控制台上开始输入`lapply`,`sapply`,`apply`并查看这些函数的第一行.;) (3认同)