我想在一个循环内使用caret包(7个响应变量中的每一个)训练几个模型。

我的data.frame data具有46个预测变量(所有预测变量都用于训练所有模型)和7个响应。

我尝试了一些Rcode,但失败了:

models.list = list()
Ynames = names(data)[47:ncol(data)]
for(y in Ynames)
{
models.list[[y]] = train(as.name(y)~., subset(data,select=-Ynames[-y]),method="".....)
}


我的变量Ynames包含所有响应。
每个模型都必须使用单个响应变量进行训练。
因此,对于迭代1,我们将针对Ynames[1]响应和所有46个预测变量训练模型,但是有必要从数据集data中排除所有非第一响应变量(Ynames[-1])。

最佳答案

这可能是与您的示例匹配的替代方法(使用虹膜)。该子集基于以下帖子:removing a list of columns from a data.frame using subset

models.list = list()
Ynames = names(iris)[3:ncol(iris)]

for(y in Ynames)
{
  to.remove <- Ynames[!Ynames==y]
  `%ni%` <- Negate(`%in%`)
  models.list[[y]] = train(as.name(y)~., subset(iris,select = names(iris) %ni% to.remove),method="".....)
}

关于r - 如何在循环中训练几个模型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43736986/

10-12 01:32