2017-06-19 9 views
0

"riverplot"パッケージを使用してSankeyダイアグラムを作成するのは苦労しています。最小限のおもちゃの例を作成することはできませんでしたので、makeRiver()によって作成されたriverplotオブジェクトをここに含める必要があります。 makeRiverはエラーを投げなかったので、うまくいくと思っていましたが、そうではありません。あなたの誰かがアイデアを持っていることを願っています。エラースタイル[[id]]: "riverplot"パッケージの範囲外のインデックス作成

これは私がプロットしようとしていますriverplotオブジェクトです:

$edges 
    ID N1 N2 Value 
102 102 2 10  3 
106 106 6 10  2 
111 111 2 11  7 
115 115 6 11  2 
119 119 1 12  1 
120 120 2 12 72 
121 121 3 12  4 
125 125 7 12  7 
127 127 9 12  4 
129 129 2 13 14 
134 134 7 13  2 
136 136 9 13  1 
145 145 9 14  1 
147 147 2 15  4 
152 152 7 15  1 
154 154 9 15  1 
156 156 2 16  1 
165 165 2 17 69 
166 166 3 17  3 
167 167 4 17  1 
168 168 5 17  1 
169 169 6 17  2 
170 170 7 17  7 
171 171 8 17  1 
172 172 9 17  8 

$nodes 
    ID      labels x 
1 1      Albanisch 1 
2 2      Arabisch 1 
3 3    Arabisch;Englisch 1 
4 4    Arabisch;Türkisch 1 
5 5 Englisch;Kurdisch;Arabisch 1 
6 6      Kurdisch 1 
7 7    Kurdisch;Arabisch 1 
8 8    Syrisch;Arabisch 1 
9 9       keine 1 
10 10      Arabisch 2 
11 11    Arabisch;Englisch 2 
12 12      Englisch 2 
13 13   Englisch;Französisch 2 
14 14 Englisch;Französisch;Arabisch 2 
15 15     Französisch 2 
16 16   Französisch;Englisch 2 
17 17       keine 2 

$styles 
list() 

attr(,"class") 
[1] "list"  "riverplot" 

(私は、オブジェクトを保存する変数の名前が「川」)riverplot(river)を呼び出すと、私は(次の出力を得るごめんことエラーメッセージがドイツ語である、それは)「インデックスが範囲外(INGの)」と言う:

[1] "calculating positions" 
[1] 21.9 
    ID      labels x 
1 1      Albanisch 1 
2 2      Arabisch 1 
3 3    Arabisch;Englisch 1 
4 4    Arabisch;Türkisch 1 
5 5 Englisch;Kurdisch;Arabisch 1 
6 6      Kurdisch 1 
7 7    Kurdisch;Arabisch 1 
8 8    Syrisch;Arabisch 1 
9 9       keine 1 
10 10      Arabisch 2 
11 11    Arabisch;Englisch 2 
12 12      Englisch 2 
13 13   Englisch;Französisch 2 
14 14 Englisch;Französisch;Arabisch 2 
15 15     Französisch 2 
16 16   Französisch;Englisch 2 
17 17       keine 2 
[1] "done" 
[1] "drawing edges" 
Fehler in styles[[id]] : Indizierung außerhalb der Grenzen 

私は機能riverplot:::getattrに問題をトレースすると思うが、私はそのことについて確認していません。どんな助け?

答えて

0

私が上で説明した問題の解決策に興味がある人は:ノード(1,2,3、...)とエッジ(101,102、...)の数値IDを使用しました。

makeRiver()ノードとエッジでIDが重複していないかどうかを確認し、エラーが発生した場合はエラーをスローします。ただし、IDが完全に数値であるかどうかはチェックされません。これは明らかにエラーの原因です。

エッジID(E1、E2、...)の先頭に「E」を追加し、ノードID(N1、N2、...)の先頭に「N」を追加しました。それは今働きます!

関連する問題