2017-06-12 47 views
0

我想提取來自nodeapply(info_node)函數的信息。使用(partykit-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」的類型在函數中是否是錯誤的,導致在打印中出現空讀。

如果有人可以幫助我,將不勝感激!

感謝

回答

0

你可以給nodeapply()ids列表,然後不僅清單,單一的元素將被提取,但所有選擇的節點列表。這是您問題中唯一的partykit特定部分。

從這一點開始,它只是在R中的標準命名列表上進行操作,而沒有任何關於該列表的具體內容partykit。爲了解決你的問題,你可以很容易地使用[[索引,而不是$索引,或者與一個整數或字符索引:

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

因此,在你的infonode()功能,您既可以由0​​或info[[as.character(j)]]$n更換info$Ĵ$n

不過,我只想用sapply()做到這一點:

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

或這一些變化......

+0

謝謝!這工作得很好,我無法對你的幫助表示感謝!真的很感激它! –