我使用提取網頁的源和建築樹木評論數據:可以使用其他樹作爲R中的子節點構建data.tree嗎?
`tmpTree <- FromListExplicit(postData[[1]], nameName = "poster", childrenName = "child")`
其中postData
是使用xml_find_all
和postData[[1]]
提取節點列表改變每次從列表中創建一個新的樹時間。提取節點的函數可以在我於8月份發佈的SO question中找到,幸好RSelenium本人的創建者jdharrison回答了這個問題。
我想什麼要問的是我是否能產生一種例如樹木樹:
newTree <- Node$new("Tree67770)
newTree$AddChild(tmpTree)
讓我結束了由其它三分球,那麼這將成爲一個節點樹最後的樹,當我繪製大樹時,我可以看到所有的名字(海報)。
以上不起作用,錯誤cannot coerce type 'environment' to vector of type 'character'
是可以理解的,因爲每個tmpTree
不是字符而是一個列表。我想將每個樹改爲data.frame,然後將所有data.frame添加回來構建一棵大樹,但在我看來,這太長而且很麻煩。任何幫助將不勝感激。謝謝。
編輯補充dput例子: 實施例1:
structure(list(postId = 2794984430, date = "Thursday, July 21, 2016 11:17 AM",
poster = "MMM", disqusUname = "disqus_rVXuxnq9MP", message = "\rI am against abortion but I am in favour of contraceptives. Is the MAP a (emergency) contraceptive or not? Is the MAP abortive or not? Unless there is clear unequivocal evidence about this, the circus will continue!\r",
child = list(structure(list(postId = 2795948275, date = "Thursday, July 21, 2016 9:07 PM",
poster = "David Farrugia", disqusUname = "davidfarrugia",
message = "\rIt all depends when the soul has been installed into the egg. LOL\r"), .Names = c("postId",
"date", "poster", "disqusUname", "message")))), .Names = c("postId", "date", "poster", "disqusUname", "message", "child"))
實施例2:
structure(list(postId = 2795142611, date = "Thursday, July 21, 2016 2:04 PM",
poster = "David", disqusUname = "disqus_tTjwlqxma8", message = "\rthis reminds me of the Divorce debate. the dinosaurs from church and the parliament seem to be against anything 'god' does not allow. can they accept the fact that not all of us are into religious fairy tales?\r",
child = list(structure(list(postId = 2796284665, date = "Friday, July 22, 2016 12:30 AM",
poster = "Nessy Testa", disqusUname = "NICOTI", message = "\rno they want to shove their \"morals\" down our throats.. then they go to repent their sins..\r"), .Names = c("postId",
"date", "poster", "disqusUname", "message")))), .Names = c("postId", "date", "poster", "disqusUname", "message", "child"))
中的每一個上述實施例中產生一個樹根和子節點,並且其中因爲其他人的身高是6層或更多。
我用tmpTree <- FromListExplicit(postData[[Example 1 or 2]], nameName = "poster", childrenName = "child")
提取樹,我又試圖轉換成使用一個新的節點:只要newNode <- Node$new(tmpTree)
被執行
newTree <- Node$new("root6770")
newNode <- Node$new(tmpTree)
newTree$AddChildNode(newNode)
與Error in as.vector(x, "character") : cannot coerce type 'environment' to vector of type 'character'
的結果。
我希望在這個例子中我更好地解釋了自己。謝謝你的幫助。
謝謝,我回家時會嘗試。順便說一句,當你寫't2 < - Node $ new(「subtree」)',你指的是節點的實際名稱還是整個樹的時候,爲了確保我的理解正確?不會將't2'添加爲子節點,只需將其添加爲名稱而不添加其他信息?正如我所說,我會稍後再嘗試,並會讓你知道我的結果。 – salvu
節點和樹之間沒有區別。樹的入口點是根節點。其他節點跨越子樹。 'AddChild'是創建'Node'並使用'AddChildNode'添加它的快捷方式。如果使用'AddChildNode',則添加的節點將保留(具有其所有屬性和後代)。 –
我按照建議嘗試了,但仍然面臨as.vector(x,「字符」)中的錯誤:當我使用ts < - 節點$時, 不能強制類型'字符'新(tmptree)',所以很可能我一定是做錯了什麼。當使用上述示例時,新子節點沒有任何其他數據,因爲「子樹」只是一個字符串。我正在編輯我的問題,以便我發佈一個我想要在同一棵樹下添加爲兒童的我的(最小)兩棵樹的dput示例,以期更好地解釋自己。再次感謝。 – salvu