2015-09-26 27 views
0

如果您運行以下命令:如何獲得一個txt樹的孩子在partykit格式

library(RWeka) 
data(iris) 
res = J48(Species ~., data = iris) 

你會得到下面的樹:

R> res 
J48 pruned tree 
------------------ 

Petal.Width <= 0.6: setosa (50.0) 
Petal.Width > 0.6 
| Petal.Width <= 1.7 
| | Petal.Length <= 4.9: versicolor (48.0/1.0) 
| | Petal.Length > 4.9 
| | | Petal.Width <= 1.5: virginica (3.0) 
| | | Petal.Width > 1.5: versicolor (3.0/1.0) 
| Petal.Width > 1.7: virginica (46.0/1.0) 

Number of Leaves :  5 

Size of the tree : 9 

現在,複製並粘貼到文本文件並保存 - 這是我的輸入文件。 我想以一種格式獲得每個節點(父)及其樹的孩子(這只是一個例子)的列表,就像我在R中運行這棵樹並使用as.party一樣。 (記住我不能使用它,因爲它只是一個txt格式)。 我想以同樣的方式獲得節點列表和他們的孩子,就像在partykit包中使用x $ kids一樣。 我該怎麼辦?

回答

1

原則上,這是可能的,但它很可能是容易出錯的。即使它有效,它也不會包含as.party(res)包含的所有信息。例如,這裏不能推斷原始數據的一些變量(Sepal.LengthSepal.Width)。類似地,在某些級別不是任何終端節點中最頻繁級別的情況下,可能並不是所有的響應級別都可以被推斷出來。與所有終端節點中的所有響應級別相關的頻率也可能不完全可重構。

簡而言之:partykit包在從其他包中強制樹時會避免純文本解析,因爲結果可能錯誤/不完整。轉換對象(而不是它們的文本表示)可以可靠地工作。

+0

Achim,非常感謝。你能告訴我怎樣才能從txt文件中做到這一點? – Avi

+0

不,對不起,如上所述:一般情況下不起作用,因此我認爲不值得在此花時間。如果你想這樣做,你將不得不''readLines'文件,然後使用通常的文本處理函數進行解析:'grep','gsub','strsplit','paste'等。 –

相關問題