r - R插入符号包,错误:请确保`y`是一个因子或数值
问题描述
我正在尝试使用 caret 包来交叉验证我制作的模型。它取决于 3 个变量,但我使用的数据集远不止这些。为了重现更精确的示例,我制作了变量 abcd 和 e,但仅使用 ab 和 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 但没有运气。任何人都从经验中知道为什么这不起作用?我用谷歌搜索了几个小时,找不到完全相同的问题。
解决方案
您应该使用公式(和参数data
)或 参数,您将两者混合使用。因此,您可以使用以下公式:x
y
model <- train(
y ~ a + b + c, data = df,
method = "lm",
trControl = trainControl(
method = "cv", number = 10,
verboseIter = TRUE,
))
(您不需要编写df$y
,df$a
等,因为您提供了data
参数,因此 R 知道要查看该数据帧)
推荐阅读
- python - 当我的机器人应该只给触发它的用户一个角色时,它会给每个人一个角色
- python-3.x - 使用 Python 访问共享驱动器中的文件
- android - 在 Android 的单一活动应用程序中更改主题
- python - python xpath解析xml避免
- excel - 查找公式中的 VBA 变量范围
- java - 如何将Dialog的大小设置为全屏
- javascript - 链接到从 pandas 数据框创建的 html 表的最后一列的内容
- c - 根据需要更改数组的大小:C
- python - 如何在 Python(和 Selenium)中的下一条语句之前等待 for 循环完成?
- angular - NgForm控件的问题按字母顺序排列Angular