rtreerpart

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

Solution

  • 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