So I have used the rpart package to create a tree model and I found an interesting rule and wondered if there was an easy way to see which observations in that data frame pa
#' subset of rpart node: return logical index
#' @param tree rpart model
#' @param node which node/leaf?
#' @export
subset_rpart <- function (tree, node) {
nodes = as.numeric(rownames(tree$frame))
nodes = log(nodes, 2)
lower = log(node, 2)
upper = log(node + 1, 2)
a = floor(lower)
lower_ = lower - a
upper_ = upper - a
nodes_ = nodes %% 1
w = which(((nodes_ >= lower_ & nodes_ < upper_) | (nodes_ + 1 < upper_)) & nodes >= lower)
tree$where %in% w
}
#' subset df by subset_rpart
#' @param tree rpart model
#' @param node node number
#' @param df df
#' @export
subset.rpart = function(tree, node, df){
df[subset_rpart(tree, node), ]
}