【问题标题】:Getting invalid model formula in ExtractVars when using rpart function in R在 R 中使用 rpart 函数时在 ExtractVars 中获取无效的模型公式
【发布时间】:2015-01-14 20:21:44
【问题描述】:

数据集可以从http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/下载

得到以下错误:

formula(formula, data = data) : 
  invalid model formula in ExtractVars

使用以下代码:

install.packages("rpart")
library("rpart")

# you'll need to change the following from windows to work on a linux box:
mydata <- read.csv(file="c:/Users/md7968/downloads/winequality-red.csv")

# grow tree 
fit <- rpart(YouSweetBoy ~ "residual sugar" + "citric acid", method = "class", data = mydata

请注意,我已将 CSV 文件中的分隔符更改为逗号。

也许它没有正确读取数据。原谅我,我是 R 新手,不是一个很好的程序员。

【问题讨论】:

    标签: r rpart


    【解决方案1】:

    看看names(mydata)。当您创建一个 data.frame 时,read.table() 会将“坏”列名变成好的列名。您不能(好吧,不应该)在列名中有空格,因此 R 将空格更改为句点。另外,你不应该在公式中引用字符串。试试

    fit <- rpart(quality ~ residual.sugar + citric.acid, method = "class", data = mydata)
    

    (我不知道“YouSweetBoy”应该是什么,因为它不在数据集中,所以我将其更改为“质量”)。

    【讨论】:

    • 非常感谢!但是,我运行代码并得到以下信息: eval 中的错误(expr,envir,enclos):找不到对象“质量”
    • 您链接到的数据集有一个“质量”列。用你想要的响应变量替换它。
    • 工作表中有一个质量列,但是我仍然收到错误。
    • 我不知道该告诉你什么。这对我有用mydata&lt;-read.table("http://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv", sep=";", header=TRUE);rpart(quality ~ residual.sugar + citric.acid, method = "class", data = mydata); 用 R 版本 3.1.1 和 rpart_4.1-8 测试。
    • 非常感谢,成功了!这可能只是我的 CSV 版本搞砸了。你是天赐之物!
    【解决方案2】:

    删除自变量名称中的空格并去掉引号使其工作。

    用residual_sugar代替“残糖”

    【讨论】:

      【解决方案3】:

      或者,用 ``

      包装你的变量名

      所以

      `residual sugar`
      

      这应该可行:

      fit <- rpart(quality ~ `residual sugar` + `citric acid`, method = "class", data = mydata)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-23
        • 1970-01-01
        • 1970-01-01
        • 2023-04-10
        • 2019-08-24
        相关资源
        最近更新 更多