First, incorporate find_leaf_node function into the package.
find_leaf_node <- function(tree, sample) {
node <- 1
while (TRUE) {
if (tree$nodes[[node]]$is_leaf) {
break()
}
split_var <- tree$nodes[[node]]$split_variable
split_value <- tree$nodes[[node]]$split_value
if (sample[split_var] <= split_value) {
node <- tree$nodes[[node]]$left_child
} else {
node <- tree$nodes[[node]]$right_child
}
}
node
}
Second, find_leaf_node gives external numbering but s.forest$_leaf_samples[[1]] is internal.