我无法理解这里出了什么问题。
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
答案 0 :(得分:17)
不知道为什么@Janos删除了他的答案,但这是正确的:您的数据框Train
没有名为pre
的列。将公式和数据框传递给模型拟合函数时,公式中的名称必须引用数据框中的列。您的Train
列中包含residual.sugar
,total.sulfur
,alcohol
和quality
列。您需要更改公式或数据框,以使它们彼此一致。
只是为了澄清: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)
我终于弄清楚randomForest比rpart更吝啬,它无法识别带有空格,逗号或其他特定标点符号的colname。
粘贴功能会将“A”和“”作为每个colname的分隔符。 所以我们需要避免空间并改为使用这句话:
y1 = [float(interval) for op, response, interval in pieces]
这将在没有空格的情况下添加字符串。