4

我有一个数据集,其中包含 6 个分类变量,级别从 5 到 28 不等。我从ctree()(派对包)获得了一个输出,有 17 个终端节点。我遵循了ctree() 中 @Galled 的输入 - 如何获取每个终端节点的拆分条件列表?达到我想要的输出。

但是,我在运行代码后收到以下错误:

Error in data.frame(ResulTable, Means, Counts) : 
  arguments imply differing number of rows: 17, 2

我尝试添加这些额外的行:

ResulTable <- rbind(ResulTable, cbind(Node = Node, Path = Path2))

ResulTable$Node <- rownames(ResulTable)

melt(ResulTable)

但到目前为止还没有成功。关于哪里出错的任何指示?

4

1 回答 1

8

我建议使用新的partykit实现ctree()而不是旧的party包,然后你可以使用函数.list.rules.party()。这还没有正式导出,但可以用来提取所需的信息。

library("partykit")
airq <- subset(airquality, !is.na(Ozone))
ct <- ctree(Ozone ~ ., data = airq)
partykit:::.list.rules.party(ct)
##                                      3                                      5 
##             "Temp <= 82 & Wind <= 6.9" "Temp <= 82 & Wind > 6.9 & Temp <= 77" 
##                                      6                                      8 
##  "Temp <= 82 & Wind > 6.9 & Temp > 77"             "Temp > 82 & Wind <= 10.3" 
##                                      9 
##              "Temp > 82 & Wind > 10.3" 
于 2015-05-02T08:17:47.447 回答