eval中的错误(predvars,data,env):object' Rm'找不到

时间:2018-05-26 05:33:17

标签: r classification prediction rpart

dataset = read.csv('dataset/housing.header.binary.txt')
dataset1 = dataset[6] #higest positive correlation
dataset2 = dataset[13] #lowest negative correlation
dependentVal= dataset[14] #dependent value
new_dataset = cbind(dataset1,dataset2, dependentVal) # new matrix 

#split dataset
#install.packages('caTools')
library(caTools)

set.seed(123) #this is needed to garantee that every run will produce the same output
split = sample.split(new_dataset, SplitRatio = 0.75)
train_set = subset(new_dataset, split == TRUE)
test_set = subset(new_dataset, split == FALSE)


#Fitting Decision Tree to training set
install.packages('rpart')
library(rpart)
classifier = rpart(formula = Medv ~ Rm + Lstat,
                   data = train_set)

#predicting the test set results
y_pred = predict(classifier, newdata = test_set[3], type ='class')

我想预测test_set的第3列,但我一直在准备

  

eval中的错误(predvars,data,env):object' Rm'找不到

即使我指定test_set[3]而不是test_set[1],其中包含Rm

列名如下:RmLstatMedv

test_set[3]test_set[2]会出现同样的错误:

  

eval中的错误(predvars,data,env):找不到对象Rm

test_set[1]给出:

  

eval中的错误(predvars,data,env):object' Lstat'找不到

我尝试了以下内容:

  1. names(test_set) <- c('Rm', 'Lstat','Medv'):我明确重命名。
  2. is.data.frame(test_set):我检查了test_set是否为数据框。

2 个答案:

答案 0 :(得分:4)

我通过以下代码

解决了这个问题
y_pred = predict(classifier, newdata = test_set[-3], type ='class')

https://www.rdocumentation.org/packages/rpart/versions/4.1-13/topics/predict.rpart 引用R文档

&#34; newdata:包含需要预测的值的数据框。公式(对象)右侧所指的预测变量必须在newdata中以名称出现。如果缺少,则返回拟合值。&#34;

答案 1 :(得分:-2)

请参考此链接Error in eval(predvars, data, env)

基本上我们需要注意两点 1)不要在新对象中使用data.frame:

predict(my_mdl, newdata) Error in eval(predvars, data, env) : numeric 'envir' arg not of length one

2)在新数据框中不使用相同的名称:

newdf2 <- data.frame(newdata) predict(my_mdl, newdf2) Error in eval(expr, envir, enclos) : object 'disp' not found