【发布时间】:2012-12-12 08:13:22
【问题描述】:
我正在开展一个项目来分析函数输出,因此需要在 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")
提前感谢您的帮助。
【问题讨论】:
-
根据您应该运行的代码部分给我一个错误。如果您只处理线性模型,则可以将公式传递给您的评分函数。
-
也许你应该了解一下'['和'[['的区别。第二个版本应该适用于模型[[1]]
标签: r function variables arguments