“训练”功能“插入符”软件包R中的错误:“请为`x`使用列名”

时间:2019-06-20 15:17:17

标签: r r-caret caret

我正在尝试使用火车功能进行一次留出(LOO)交叉验证(LOOCV)。

train(y~ x1, data = test, method="lm", trControl = trainControl(method = "LOOCV")) 

可以很好地工作,我需要用另一种格式编写它,然后将其放入for循环中,该循环可以创建所需数量的模型。但是以下格式不起作用并给出错误:

train(paste("y~", colnames(test[2])), data = test, method="lm", trControl = trainControl(method = "LOOCV"))
Error: Please use column names for x

但是“ lm”功能中的相同格式效果很好:

lm(paste("y~", colnames(test[2])), data = test)

能否请您指导我如何解决此问题?

1 个答案:

答案 0 :(得分:0)

找到了解决方案!

lm("y~x1", data=test)

相同
lm (y~x1, data=test)

但是“ y〜x1”在火车功能中不起作用。 需要在其前添加“ as.formula ”:

train(as.formula("y~x", data=test, method="lm", trControl = trainControl(method = "LOOCV"))