Suppose I build a toy tree model with RPART, how can I get the depth of the tree?
library(rpart)
library(partykit)
fit=rpart(factor(am)~.,mtcars,control=rpart.control(cp=0,minsplit = 1))
plot(as.party(fit))
I know how to count the leaves, for binary tree, we can approximate the depth by number of leaves, but it is not directly the depth of the tree.
sum(fit$frame$var=="<leaf>")
rpart has a unexported function tree.depth
that gives the depth of each node in the vector of node numbers passed to it. Using data from the question:
nodes <- as.numeric(rownames(fit$frame))
max(rpart:::tree.depth(nodes))
## [1] 2