Ошибка в eval (expr, envir, enc): объект не найден
Я очень новичок в кодировании в R и не понимаю, что здесь происходит. Любая помощь будет высоко оценена.
data.train <- read.table("Assign2.WineComplete.csv",sep=",",header=T)
# Building decision tree
Train <- data.frame(residual.sugar=data.train$residual.sugar,
total.sulfur.dioxide=data.train$total.sulfur.dioxide,
alcohol=data.train$alcohol,
quality=data.train$quality)
Pre <- as.formula("pre ~ quality")
fit <- rpart(Pre, method="class",data=Train)
Я получаю следующую ошибку:
Error in eval(expr, envir, enclos) : object 'pre' not found
Ответы
Ответ 1
Не знаю, почему @Janos удалил свой ответ, но он правильный: в вашем фрейме данных Train
нет столбца с именем pre
. Когда вы передаете формулу и кадр данных в функцию установки модели, имена в формуле должны ссылаться на столбцы в фрейме данных. В вашем Train
есть столбцы с именами residual.sugar
, total.sulfur
, alcohol
и quality
. Вам нужно изменить формулу или фрейм данных, чтобы они соответствовали друг другу.
И просто уточнить: pre
- это объект, содержащий формулу. Эта формула содержит ссылку на переменную pre
. Это последнее, которое должно соответствовать кадру данных.
Ответ 2
Просто добавьте к этому; Это может произойти, если вы не приложите свой набор данных
Просто потратил полтора часа на то, чтобы понять это.
Приветствия
Ответ 3
Я думаю, что получил то, что искал.
data.train <- read.table("Assign2.WineComplete.csv",sep=",",header=T)
fit <- rpart(quality ~ ., method="class",data=data.train)
plot(fit)
text(fit, use.n=TRUE)
summary(fit)
Ответ 4
Я использую colname (train) = paste ( "A", colname (поезд))
и получается такая же проблема, как и ваша.
Наконец-то выяснилось, что randomForest более скупой, чем rpart, он не может распознать colname с пробелом, запятой или другой определенной пунктуацией.
Функция пасты будет добавлять "A" и "" в качестве разделителя с каждым colname.
поэтому нам нужно предотвратить пространство и использовать это предложение вместо:
colname(train) = paste("A", colname(train), sep = "")
это добавит строку без пробела.