web-dev-qa-db-de.com

Fehler in eval (predvars, data, env): Objekt 'Rm' nicht gefunden

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

Ich möchte Spalte 3 von test_set vorhersagen, aber ich bekomme immer mehr 

Fehler in eval (predvars, data, env): Objekt 'Rm' nicht gefunden

Obwohl ich test_set[3] nicht test_set[1] angegeben habe, die Rm enthalten

Die Spaltennamen lauten wie folgt: Rm, Lstat und Medv.

test_set[3] und test_set[2] geben den gleichen Fehler aus: 

Fehler in eval (predvars, data, env): Objekt Rm nicht gefunden

und test_set[1] gibt an: 

Fehler in eval (predvars, data, env): Objekt 'Lstat' nicht gefunden

Ich habe folgendes versucht:

  1. names(test_set) <- c('Rm', 'Lstat','Medv'): Ich habe explizit umbenannt.
  2. is.data.frame(test_set): Ich habe überprüft, ob test_set ein Datenrahmen ist.

Ich habe das Problem durch folgenden Code gelöst

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

https://www.rdocumentation.org/packages/rpart/versions/4.1-13/topics/predict.rpart Zitat aus der R-Dokumentation

"newdata: Datenrahmen mit den Werten, bei denen Vorhersagen erforderlich sind. Die auf der rechten Seite der Formel (Objekt) genannten Prädiktoren müssen in newdata nach Namen vorhanden sein. Wenn sie fehlen, werden die angepassten Werte zurückgegeben."