错误:'data'必须是数据帧、环境或列表


#define training and testing sets
set.seed(555)
train <- df2[1:800, c("charges")]
y_test <- df2[801:nrow(df2), c("charges")]
test <- df2[801:nrow(df2), c("age","bmi","children","smoker")]

#use model to make predictions on a test set
model <- pcr(charges~age+bmi+children+smoker, data = train, scale=TRUE, validation="CV")
pcr_pred <- predict(model, test, ncomp = 4)
#calculate RMSE
sqrt(mean((pcr_pred - y_test)^2))

我不知道为什么我得到这个错误…已经尝试了很多东西,但仍然停留在这里

当你执行:

train <- df2[1:800, c("charges")]

您创建了一个R原子字符向量。结果的类不会是一个列表,除非您还添加了drop=FALSE参数:

train <- df2[1:800, c("charges"), drop=FALSE]

这应该修复了这个错误,尽管缺乏任何数据使我们无法确定是否会出现进一步的错误。实际上,我很确定您不希望这个train对象只是一个列,因为您的模型显然需要其他列。试试这个:

set.seed(555)
train <- df2[1:800, ]
test <- df2[801:nrow(df2), ]

#use model to make predictions on a test set
model <- pcr(charges~age+bmi+children+smoker, data = train, scale=TRUE, validation="CV")
pcr_pred <- predict(model, test, ncomp = 4)
#calculate RMSE
sqrt(mean((pcr_pred - y_test)^2))

最新更新