使用(partykit-Nodeapply-Info_node)提取函数内的信息

Use (partykit- Nodeapply- Info_node) to extrac information within the function

我正在尝试提取来自 nodeapply( info_node) 函数的信息。

我想使该过程自动化,以便我可以提取节点 ID 列表的信息并稍后对其进行操作。

示例如下:

data("cars", package = "datasets")
ct <- ctree(dist ~ speed, data = cars)

node5 <-nodeapply(as.simpleparty(ct), ids = 5, info_node)
node5$`5`$n

我使用上面的代码提取节点 5 上的记录数。

我想创建一个函数来从一系列节点中提取信息:

infonode <- function(x,y){
  for (j in x){
  info = nodeapply(y, j, info_node)
  print(info$`j`$n)
  }
}

但是返回的结果总是 null。

我想知道 "J" 的类型是否在导致打印中读取空值的函数中是错误的。

如果有人能帮助我,将不胜感激!

谢谢

您可以给 nodeapply() 一个 ids 的列表,然后不仅会提取具有单个元素的列表,还会提取所有选定节点的列表。这是您问题中唯一 partykit 特定的部分。

从那时起,它只是在 R 中的标准命名列表上运行,没有任何 partykit 具体说明。要解决您的问题,您可以轻松地使用 [[ 索引而不是 $ 索引,使用整数或字符索引:

node5[[1]]$n
##  n 
## 19 
node5[["5"]]$n
##  n 
## 19 

因此,在您的 infonode() 函数中,您可以将 info$j$n 替换为 info[[1]]$ninfo[[as.character(j)]]$n.

但是,我会简单地使用 sapply():

ni <- nodeapply(as.simpleparty(ct), ids = 3:5, info_node)
sapply(ni, "[[", "n")
## 3.n 4.n 5.n 
##  15  16  19 

或者这个的一些变体...