可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
I am very new to coding in R, and cannot understand what is going wrong here. Any help will be much appreciated.
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)
I am getting the following error :
Error in eval(expr, envir, enclos) : object 'pre' not found
回答1:
Don't know why @Janos deleted his answer, but it's correct: your data frame Train
doesn't have a column named pre
. When you pass a formula and a data frame to a model-fitting function, the names in the formula have to refer to columns in the data frame. Your Train
has columns called residual.sugar
, total.sulfur
, alcohol
and quality
. You need to change either your formula or your data frame so they're consistent with each other.
And just to clarify: Pre
is an object containing a formula. That formula contains a reference to the variable pre
. It's the latter that has to be consistent with the data frame.
回答2:
Just to add to this; This can happen if you don't attach your dataset Just wasted a half hour figuring this out as well.
Cheers
回答3:
I think I got what I was looking for..
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:
i use colname(train) = paste("A", colname(train)) and it turns out to the same problem as yours.
I finally figure out that randomForest is more stingy than rpart, it can't recognize the colname with space, comma or other specific punctuation.
paste function will prepend "A" and " " as seperator with each colname. so we need to avert the space and use this sentence instead:
colname(train) = paste("A", colname(train), sep = "")
this will prepend string without space.