【问题标题】:Error in eval(expr, envir, enclos) : object not foundeval 中的错误(expr、envir、enclos):找不到对象
【发布时间】:2013-10-28 02:13:27
【问题描述】:

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

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

【问题讨论】:

  • 您不需要代码的第二行或第三行。只需执行read.table 行,然后执行:fit &lt;- rpart(pre ~ quality, method="class",data=data.train)
  • 我尝试了你让我做的事情,但我仍然得到同样的错误
  • 这里有大写/小写问题吗?我看到声明了“Pre”,但错误与“pre”有关。
  • 不,如果不是所有语句,我只写 data.train

标签: r dataframe rpart


【解决方案1】:

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

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

【讨论】:

  • 嗯.. 我在尝试编辑我的评论时错误地删除了他的帖子.. 对此@Janos 感到抱歉.. 我明白你的意思.. 但是在使用 rpart 构建决策树时,你能拜托吗告诉我公式应该是怎样的,决策树必须只有“质量”列。我尝试使用 R :: fit 中的示例
  • 要使用rpart,您需要一个因变量:使用自变量进行预测或估计的东西。您的数据框中的哪些是依赖项?
【解决方案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)

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我用 colname(train) = paste("A", colname(train)) 结果和你的问题一样。

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

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

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

      这将在字符串前面加上空格。

      【讨论】:

        最近更新 更多