我试图在James等人的“使用R中的应用程序进行统计学习的介绍”的教科书示例中继续学习,并且我遇到了一条我不理解的错误信息。
library(MASS)
library(randomForest)
set.seed(1)
bag.boston=randomForest(medv~.,data=Boston, subset=train,mtry=13, importance=TRUE)
yhat.bag = predict(bag.boston,newdata=Boston[-train,])
使用最后一行我收到错误消息
eval(expr,envir,enclos)中的错误:找不到对象'age'
为什么我收到此错误消息,如何阻止它?我看到这里有一个类似的问题: Error in running randomForest : object not found 。但在这种情况下,OP试图输入矩阵而不是数据帧作为其原始数据集,无论如何都是在randomForest调用,而不是预测调用。
这个人randomForest in R object not found error也有类似的问题,但在文本文件中追溯到非ascii字符,我很确定这不是这个数据集的特征。
也许我应该在预测函数中为“newdata”替换“data”这个词,但这似乎产生了与我在文本示例中看到的完全不同的答案。
还有其他想法吗?
答案 0 :(得分:2)
我找到了你所指的那本书的副本,作者和USC已经published online。
您遗漏了运行此代码块所需的代码。在本书中,代码片段来自于在许多页面和代码块之间分解的文件/ R会话,并且取决于正在运行的早期代码,例如创建train
。当该书中包含必要的代码时,它运行正常。你得到的错误无法复制。
library(MASS)
library(randomForest)
library(tree)
set.seed(1)
train = sample(1:nrow(Boston), nrow(Boston)/2)
bag.boston=randomForest(medv~.,data=Boston, subset=train,mtry=13, importance=TRUE)
yhat.bag = predict(bag.boston,newdata=Boston[-train,])
summary(yhat.bag)
Min. 1st Qu. Median Mean 3rd Qu. Max. 7.965 17.050 21.330 22.700 25.530 48.690