R caret软件包,错误:请确保`y`是一个因子或数值

时间:2018-10-15 03:44:16

标签: r linear-regression modeling cross-validation r-caret

我正在尝试使用插入符号包交叉验证我制作的模型。它取决于3个变量,但是我使用的数据集不止于此。为了重现更精确的示例,我将变量a b c d和e设置为变量,但仅使用b和c进行了预测。

a <- rnorm(10)
b <- rnorm(10)
c <- rnorm(10)
d <- rnorm(10)
e <- rnorm(10)
y <- rnorm(10)
df <- data.frame(a,b,c,d,e,y, stringsAsFactors=FALSE)

library(caret)
model <- train(
df$y ~ df$a + df$b + df$c, x = df,
method = "lm",
trControl = trainControl(
method = "cv", number = 10,
verboseIter = TRUE, 
))

这会导致错误:请确保y是一个因子或数值

我尝试了几种改变y的方法,但是没有运气。有人从经验中知道为什么这行不通吗?我已经用Google搜索了两个小时,却找不到完全相同的问题。

1 个答案:

答案 0 :(得分:1)

您应该使用公式(和data自变量) xy自变量,同时将两者混合使用。因此,您可以将公式用于:

model <- train(
    y ~ a + b + c, data = df,
    method = "lm",
    trControl = trainControl(
        method = "cv", number = 10,
        verboseIter = TRUE, 
    ))

(您无需编写df$ydf$a等,因为您提供了data参数,因此R知道在该数据框中查找)