【问题标题】:Use (partykit- Nodeapply- Info_node) to extrac information within the function使用(partykit-Node Apply-Info_node)提取函数内的信息
【发布时间】:2017-11-14 12:10:04
【问题描述】:

我正在尝试从 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)
  }
}

但结果总是返回为空。

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

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

谢谢

【问题讨论】:

    标签: function nodes decision-tree extraction party


    【解决方案1】:

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

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

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

    因此,在您的 infonode() 函数中,您可以将 info$j$n 替换为 info[[1]]$n 或 info[[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 
    

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

    【讨论】:

    • 谢谢!这很好用,我不能感谢你的帮助!真的很感激!
    猜你喜欢
    • 2017-06-17
    • 2017-11-06
    • 2016-08-12
    • 2017-04-27
    • 2022-01-03
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    相关资源
    最近更新 更多