eval(expr,envir,enclos)中的错误:找不到对象

时间:2013-10-19 06:30:10

标签: r dataframe rpart

我无法理解这里出了什么问题。

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

4 个答案:

答案 0 :(得分:17)

不知道为什么@Janos删除了他的答案,但这是正确的:您的数据框Train没有名为pre的列。将公式和数据框传递给模型拟合函数时,公式中的名称必须引用数据框中的列。您的Train列中包含residual.sugartotal.sulfuralcoholquality列。您需要更改公式或数据框,以使它们彼此一致。

只是为了澄清:Pre是一个包含公式的对象。该公式包含对变量pre的引用。后者必须与数据框保持一致。

答案 1 :(得分:11)

加上这个;如果您没有附加数据集,就会发生这种情况 只是浪费了半个小时来解决这个问题。

干杯

答案 2 :(得分:1)

我想我得到了我想要的东西..

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)

答案 3 :(得分:0)

我用了     colname(train)= paste(“A”,colname(train)) 结果与你的问题相同。

我终于弄清楚randomForest比rpart更吝啬,它无法识别带有空格,逗号或其他特定标点符号的colname。

粘贴功能会将“A”和“”作为每个colname的分隔符。 所以我们需要避免空间并改为使用这句话:

y1 = [float(interval) for op, response, interval in pieces]

这将在没有空格的情况下添加字符串。