hxd1011 hxd1011 - 6 days ago 4
R Question

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

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>")

Answer

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