17

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

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

4 回答 4

22

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

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

于 2013-10-19T08:23:02.600 回答
14

如果您不附加数据集,则可能会发生这种情况。

于 2016-07-24T05:44:22.317 回答
2

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

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)
于 2013-10-19T16:52:16.917 回答
0

我使用 colname(train) = paste("A", colname(train)) ,结果与您的问题相同。

我终于发现randomForest比rpart更小气,它无法识别带有空格、逗号或其他特定标点符号的colname。

paste 函数会将“A”和“”作为每个列名的分隔符。所以我们需要避开空格,改用这句话:

colname(train) = paste("A", colname(train), sep = "")

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

于 2017-01-17T07:29:02.823 回答