2015-05-02 87 views
1

我有一個數據集有6個分類變量,範圍從5到28.我已經從ctree()(派對包)獲得輸出與17個終端節點。我通過@Galled從ctree() - How to get the list of splitting conditions for each terminal node?獲得了我期望的輸出。如何提取ctree終端節點的分割規則()

但是,我發現了以下錯誤後運行代碼:

Error in data.frame(ResulTable, Means, Counts) : 
    arguments imply differing number of rows: 17, 2 

我曾嘗試加入這個額外的線路:

ResulTable <- rbind(ResulTable, cbind(Node = Node, Path = Path2)) 

ResulTable$Node <- rownames(ResulTable) 

melt(ResulTable) 

,但沒有成功爲止。任何指向哪裏出錯的指針?

回答

5

我建議使用新的partykit執行ctree()而不是舊的party包,那麼你可以使用函數.list.rules.party()。這還沒有正式出口,但可以用來提取所需的信息。

library("partykit") 
airq <- subset(airquality, !is.na(Ozone)) 
ct <- ctree(Ozone ~ ., data = airq) 
partykit:::.list.rules.party(ct) 
##          3          5 
##    "Temp <= 82 & Wind <= 6.9" "Temp <= 82 & Wind > 6.9 & Temp <= 77" 
##          6          8 
## "Temp <= 82 & Wind > 6.9 & Temp > 77"    "Temp > 82 & Wind <= 10.3" 
##          9 
##    "Temp > 82 & Wind > 10.3" 
+0

感謝您的及時回覆。使用上面的代碼,我得到這個錯誤:ErrorMethod(「nodeids」): 沒有適用於'nodeids'的方法應用於類「c('BinaryTree','BinaryTreePartition')」 – Debbie

+0

然後你用'party :: ctree'和'partykit :: ctree'搭配你的樹。確保你不同時加載兩個軟件包。這種情緒會導致混淆... –

+0

使用Partykit包(使用默認控制參數)運行ctree與使用派對包運行ctree相比,速度更快,但花費無限期。我有一個包含100K行和6列的數據集。我在32位64 GB機器上運行R 3.1.3版本。對此有何意見? – Debbie