【发布时间】:2019-01-17 18:07:02
【问题描述】:
编辑:实际上查看该方法表明它只使用一种方法,我如何编写一个循环来选择一个给定方法向量的方法?!
我查看了几个问题 (Loop in R: how to save the outputs?),但似乎无法弄清楚如何保存这些模型的输出。这是我的“功能”:
library(caret)
Control<-trainControl(method="cv",number=5)
metric<-"Accuracy"
modeler<-function(df,yname,xname,method,metric,control){
df<-df
methods1<-method
f1<-as.formula(paste0(yname,"~",xname))
for(method in methods1){
fit<-do.call("train",list(data=quote(df),f1,metric=metric,trControl=control,
method=method))
}
fit
}
“函数”的实现:
methods1<-c("rf","rpart")
modeler(iris,yname="Species",xname=".",method = methods1,control=Control,
metric = metric)
现在我可以像这样保存上面的内容:
mod1<-modeler(iris,yname="Species",xname=".",method = methods1,control=Control,
metric = metric)
然后:
sapply(mod1,"[",1)
这可行,但只返回最后一个模型,而不是最好的显示。 如何优化此流程?
【问题讨论】:
-
试试
lapply(methods1, function(met) {modeler(iris,yname="Species",xname=".",method = met,control=Control, metric = metric)}),结果现在会在一个列表中。 -
完美!如果您不介意,您可以将其发布为答案吗?
-
哦,是的!你仍然可以发帖,我会接受的。