R将函数作为变量传入

标签 r function variables arguments

我正在开发一个项目来分析函数输出,因此需要在 R 中将函数作为参数传递。为了澄清,我有不同数量的模型,并且不寻求设置模型的帮助,只是传递模型函数名称到评分函数中。

这适用于直接调用,但我想让它更通用以构建模块。这是一个简短的例子:

#create a test function:
model1 = function(y,X){
fit = lm(y~X)
output = data.frame(resid = fit$residuals)
}

#score function:
score = function(y,X,model){
y= as.matrix(y) 
X = as.matrix(X)
fitModel = model(y,X)
yhat = y - fitModel$residual
output = data.frame(yhat=yhat)
}

我可以使用有效的 y 和 X 垫子调用此代码
df <- data.frame(x=rnorm(5),y=runif(5))
scoreModel1 = score(df$y,df$x,model1)

但我正在寻找的是一种列出所有模型、循环和/或以通用方式调用 score 函数的方法。例如:
models = c("model1")
scoreModel1 = score(df$y,df$x,models[1])

我用上面的代码得到的错误是
Error in score(y, X, model) : 
could not find function "model"

我玩过 as.function(),列出和取消列出 args,但没有任何效果。例如,以下所有参数都呈现与上述相同的错误
models = c(model1)
models = list(model1)
models = list("model1")

预先感谢您的帮助。

最佳答案

对于从谷歌来到这里想知道如何将函数作为参数传递的任何人,这里有一个很好的例子:

randomise <- function(f) f(runif(1e3))
 
randomise(mean)
#> [1] 0.5029048 

randomise(sum)
#> [1] 504.245
这是从哈德利的书中找到的 here

关于R将函数作为变量传入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14046195/

相关文章:

r - 在 x 轴上绘制带有标签的图

r - 仅当 ggplot 中 y 轴下限设置为 0 时才会出现图条

删除 geom_tile 中的空白并匹配 geom_vline&hline 位置

r - 如何将 docx 转换为 PDF?

c++ - 函数调用发生在哪里?

jquery 对元素变量执行选择器

javascript - 调用对象中定义的函数

c++ - 对 C++ 中的命名空间和参数相关查找感到困惑

events - Backbone.js 如何在事件中使用变量作为选择器

variables - perl6 无法初始化状态变量。需要帮助