生成Rpart数据树错误无效类型列表

问题描述

我是编码的新手,我正在尝试构建数据树,但是我仍然遇到相同的错误

错误 model.frame.default(formula = df〜df $ Open.Closed + df $ Region,: 变量“ df”的类型(列表)无效

我浏览了整个站点,但找不到有效的解决方案。我尝试了多种解决方案,但通常会遇到另一个错误,即数据是矩阵,该部分将不接受。任何帮助将不胜感激。

这是我的代码

library(rpart.plot)
library(ggExtra)
library(gridExtra)
library(RGtk2)
library(rpart)
library(rattle)
df[] <- data.frame(lapply(Test_Bank_Model,factor))
df [col_names] <- lapply(df[col_names],factor)

str(df)
summary(df)
print(df)


tree <- rpart(df ~ df$Open.Closed + df$Region,data = df,method = "class",model = TRUE,control = rpart.control("minsplit" = 1))
rpart.plot(tree,roundint = FALSE,Box.palette = "white")
Data:
Region
Closing.Date
Annual.Average.FedFunds
Open.Closed
1   South   2020    0.2328571   Closed
2   Mid West    2020    0.2328571   Closed
3   north East  2020    0.2328571   Open
4   South   2020    0.2328571   Open
5   north East  2020    0.2328571   Open
6   West    2020    0.2328571   Open
7   north East  2020    0.2328571   Open
8   north East  2019    1.7366667   Closed
9   South   2019    1.7366667   Closed
10  Mid West    2019    1.7366667   Closed

解决方法

从错误消息中,我认为您在需要数据框时正在使用列表对象。

lapply以列表的形式返回结果。我认为那是格式更改未引起注意的地方。

我制作了一个名为“ Test_Bank_Model”的数据框,获取了列名,并排除了“ Annual.Average.FedFunds”转换为因数(我不确定您想对年份做什么)。

rpart中,您可以像以前一样通过data参数指定data.frame。当您这样做时,可以省去自己重新键入数据帧名称的麻烦(但我不知道这是有问题的;它也应该起作用)。

Test_Bank_Model <- data.frame(Region = c("South","Mid West","North East","South","West","South"),Closing.Date = c(rep(2020,7),2019,2019),Annual.Average.FedFunds = c(0.2328571,0.2328571,1.7366667,1.7366667),Open.Closed = c("Closed","Closed","Open","Closed"))

col_names <- colnames(Test_Bank_Model)[-3]

Test_Bank_Model[,col_names] <- as.data.frame(lapply(Test_Bank_Model[,col_names],FUN=as.factor))

str(Test_Bank_Model)
# 'data.frame': 9 obs. of  4 variables:
#  $ Region                 : Factor w/ 4 levels "Mid West",..: 3 1 2 3 2 4 2 2 3
#  $ Closing.Date           : Factor w/ 2 levels "2019","2020": 2 2 2 2 2 2 2 1 1
#  $ Annual.Average.FedFunds: num  0.233 0.233 0.233 0.233 0.233 ...
#  $ Open.Closed            : Factor w/ 2 levels "Closed","Open": 1 1 2 2 2 2 2 1 1

tree <- rpart(Annual.Average.FedFunds ~ Open.Closed + Region,data = Test_Bank_Model,method = "class",model = TRUE,control = rpart.control("minsplit" = 1))
rpart.plot(tree,roundint = FALSE,box.palette = "white")

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...