web-dev-qa-db-fra.com

Erreur dans eval (predvars, data, env): objet 'Rm' introuvable

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')

Je veux prédire la colonne 3 de test_set, mais je continue à obtenir 

Erreur dans eval (predvars, data, env): objet 'Rm' introuvable

Même si je spécifie test_set[3] pas test_set[1] qui contient Rm

Les noms de colonne sont les suivants: Rm, Lstat et Medv.

test_set[3] et test_set[2] donnent la même erreur suivante: 

Erreur dans eval (predvars, data, env): objet Rm introuvable.

et test_set[1] donne: 

Erreur dans eval (predvars, data, env): objet 'Lstat' introuvable

J'ai essayé ce qui suit:

  1. names(test_set) <- c('Rm', 'Lstat','Medv'): J'ai renommé explicitement.
  2. is.data.frame(test_set): J'ai vérifié si test_set est une base de données.

J'ai résolu le problème avec le code suivant

y_pred = predict(classifier, newdata = test_set[-3], type ='class')

https://www.rdocumentation.org/packages/rpart/versions/4.1-13/topics/predict.rpart citation de la documentation R

"newdata: trame de données contenant les valeurs auxquelles des prédictions sont requises. Les prédicteurs mentionnés dans le côté droit de la formule (objet) doivent être présents par leur nom dans newdata. Si elles manquent, les valeurs ajustées sont renvoyées."