如何获得 RPART 模型中树的深度?

How can I get the depth of the tree in RPART model?

假设我用RPART建立一个玩具树模型,我怎样才能得到树的深度?

library(rpart)
library(partykit)
fit=rpart(factor(am)~.,mtcars,control=rpart.control(cp=0,minsplit = 1))
plot(as.party(fit))

我知道怎么算叶子了,对于二叉树,我们可以用叶子的个数来近似深度,但不是直接算树的深度。

sum(fit$frame$var=="<leaf>")

rpart 有一个未导出的函数 tree.depth,它给出传递给它的节点编号向量中每个节点的深度。使用问题中的数据:

nodes <- as.numeric(rownames(fit$frame))
max(rpart:::tree.depth(nodes))
## [1] 2