错误样式[[id]]:在“riverplot”包中索引越界

时间:2017-06-19 14:40:56

标签: r visualization sankey-diagram riverplot

我正在努力使用“riverplot”包创建一个Sankey图表。我没有设法创建一个最小的玩具示例,因此我必须在此处包含makeRiver()创建的riverplot对象。 makeRiver没有抛出任何错误,所以我认为它会起作用,但事实并非如此。我希望你们中的任何人都有一个想法。

这是我试图绘制的河流图对象:

$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)(“river”是我保存对象的变量的名称),我得到以下输出(抱歉,错误信息是德语,它说“Index(ing)out of out of界“):

[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,但我不确定。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

如果有人对我上面描述的问题的解决方案感兴趣:我使用数字ID表示节点(1,2,3,...)和边缘(101,102,...)。

makeRiver()检查节点和边缘之间的ID是否重复,如果发生这种情况则会引发错误。但是,它不会检查ID是否纯粹是数字,这显然是错误的来源。

我现在在边缘ID(E1,E2,...)的开头添加了“E”,在节点ID(N1,N2,...)的开头添加了“N”。它现在有效!