Learn R Programming

partykit (version 1.2-16)

nodeids: Extract Node Identifiers

Description

Extract unique identifiers from inner and terminals nodes of a partynode object.

Usage

nodeids(obj, ...)
# S3 method for partynode
nodeids(obj, from = NULL, terminal = FALSE, ...)
# S3 method for party
nodeids(obj, from = NULL, terminal = FALSE, ...)
get_paths(obj, i)

Value

A vector of node identifiers.

Arguments

obj

an object of class partynode or party.

from

an integer specifying node to start from.

terminal

logical specifying if only node identifiers of terminal nodes are returned.

i

a vector of node identifiers.

...

additional arguments.

Details

The identifiers of each node are extracted from nodeids. get_paths returns the paths for extracting the corresponding nodes using list subsets.

Examples

Run this code

  ## a tree as flat list structure
  nodelist <- list(
      # root node
      list(id = 1L, split = partysplit(varid = 4L, breaks = 1.9),
          kids = 2:3),
      # V4 <= 1.9, terminal node
      list(id = 2L),
      # V4 > 1.9
      list(id = 3L, split = partysplit(varid = 1L, breaks = 1.7),
          kids = c(4L, 7L)),
      # V1 <= 1.7
      list(id = 4L, split = partysplit(varid = 4L, breaks = 4.8),
          kids = 5:6),
      # V4 <= 4.8, terminal node
      list(id = 5L),
      # V4 > 4.8, terminal node
      list(id = 6L),
      # V1 > 1.7, terminal node
      list(id = 7L)
  )

  ## convert to a recursive structure
  node <- as.partynode(nodelist)

  ## set up party object
  data("iris")
  tree <- party(node, data = iris, 
      fitted = data.frame("(fitted)" = 
                          fitted_node(node, data = iris),
                          check.names = FALSE))
  tree
  
  ### ids of all nodes
  nodeids(tree)

  ### ids of all terminal nodes
  nodeids(tree, terminal = TRUE)

  ### ids of terminal nodes in subtree with root [3]
  nodeids(tree, from = 3, terminal = TRUE)

  ### get paths and extract all terminal nodes
  tr <- unclass(node_party(tree))
  lapply(get_paths(tree, nodeids(tree, terminal = TRUE)), 
         function(path) tr[path])

Run the code above in your browser using DataLab