2016-10-30 3 views
0

私が使用してWebページのソースや建物の木からコメントデータを抽出しています:postDataxml_find_allpostData[[1]]を使用して抽出されたノードのリストがあるR内の子ノードとして他のツリーを使用してdata.treeを構築できますか?

`tmpTree <- FromListExplicit(postData[[1]], nameName = "poster", childrenName = "child")` 

は、新しいツリーがリストから作成されるたびに変更されます。ノードを抽出する関数は、私が8月に投稿したこのSO questionにあり、RSelenium自身の作成者、jdharrisonによって感謝して答えられました。私は、その後のノードになる他のスリーで構成された一本の木で終わること

newTree <- Node$new("Tree67770) 
newTree$AddChild(tmpTree) 

:私はお願いしたいと思い何

は、私は例えば木の木のようなものを作ることができるかどうかであります最終的な木と私は大きな木をプロットするとき私はすべての名前(ポスターの)を見ることができます。

tmpTreeは文字ではなく、リストであるため、上記のように動作せず、エラーcannot coerce type 'environment' to vector of type 'character'がわかります。私は、各ツリーをdata.frameに変更してから、すべてのdata.frameを追加して1つの大きなツリーを作成することを考えましたが、それは長すぎると扱いにくいようでした。どんな助けでも大歓迎です。ありがとう。

例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)が実行されたとしてError in as.vector(x, "character") : cannot coerce type 'environment' to vector of type 'character'の結果と

newTree <- Node$new("root6770") 
newNode <- Node$new(tmpTree) 
newTree$AddChildNode(newNode) 

を。

この例で私は自分自身をより良く説明してくれることを願っています。ご協力いただきありがとうございます。

答えて

2

はい、可能です。既存のノードにサブツリーを追加するNode$AddChildNodeの代わりNode$newを使用してください:私は家に帰るとき

library(data.tree) 
newTree <- Node$new("roottree") 
tmpTree <- Node$new("subtree") 
newTree$AddChildNode(tmpTree) 
+0

おかげで、これをしようとします。私が正しく理解していることを確認するために、 't2 < - Node $ new(" subtree ")'を書いたとき、ノードの実際の名前またはツリー全体を参照していますか?子ノードとして 't2'を追加しないだけで、他の情報なしでそれを名前として追加できますか?私が言ったように、私はそれを後で試し、あなたに私の結果を知らせます。 – salvu

+0

ノードとツリーは区別されません。ツリーのエントリポイントはルートノードです。また、他のノードはすべてサブツリーにまたがっています。 'AddChild'は' Node'を作成し、 'AddChildNode'を使って追加するためのショートカットです。そして 'AddChildNode'を使うと、追加されたノードは保存されます(その属性と子孫すべてで)。 –

+0

私は示唆したように試みましたが、 'as.vector(x、" character ")のエラーにまだ直面しています:' ts < - Node $を使用するとタイプ '新しい(tmptree) 'だから、おそらく私は間違ったことをしているに違いない。上記の例を使用した場合、 'subtree'は単なる文字列なので、新しい子ノードには他のデータはありませんでした。私は自分の質問を編集しているので、私が自分自身をより良く説明できるように、同じツリーの下に子として追加しようとしている私の(最小の)ツリーのうちの2つの例を投稿します。再度、感謝します。 – salvu

関連する問題