如何将ctree节点变成向量?

时间:2018-12-15 14:48:48

标签: r dataframe nodes ctree

我将使用虹膜表的示例来说明我的问题。假设我要在萼片宽度和物种之间创建一棵树。为此,我将使用以下代码:

ctree(Species~Sepal.Width,data=iris)->a
plot(a,type="simple")

问题是,如果我想做一个数据帧,例如计算每个节点中的案例数量(从0到2.9;从2.9到3.3,依此类推),那是我发现这样做的唯一方法通过手动创建一个新矢量,然后使用dcasttable函数。

此解决方案的问题是,如果我得到更大的树结果,可能会非常困难。您知道其他解决方案吗?非常感谢。

1 个答案:

答案 0 :(得分:0)

实际上,由ctree创建的聚会结构已存储了该信息。以您的示例为例,a[1]$fitted[,1]具有每个点最终指向哪个叶子。因此,您可以使用以下方法获取每个叶子上的点数:

table(a[1]$fitted[,1])
 3  4  5 
57 56 37 

如果您尝试查看叶子编号附带的规则,则可以使用:

partykit:::.list.rules.party(a)
                                        3 
"Sepal.Width <= 3.3 & Sepal.Width <= 2.9" 
                                        4 
 "Sepal.Width <= 3.3 & Sepal.Width > 2.9" 
                                        5 
                      "Sepal.Width > 3.3"