2016-12-04 21 views
1

RでRiverplotパッケージを使用してSankeyダイアグラムを作成しようとしていますが、エッジフレームの列名に関するエラーメッセージが表示されます。EdgeplotのR-errorのRiverplotパッケージ

私はreadrとriverplotパッケージをインストールしてから、これをやっている:

Error in checkedges(edges, nodes$ID) 
    edges must have the columns N1, N2 and Value 

> my_data <- read_csv("~/RProjects/my_data.csv") 
> 
> edges = rep(my_data, col.names = c("N1","N2","Value")) 
> 
> nodes = data.frame(ID = unique(c(edges$N1, edges$N2))) 
> 
> river <- makeRiver(nodes, edges) 
> 
> return(plot(river)) 

しかしriverplotオブジェクトを設定する最後から二番目のコマンドの「川」は、私はこのエラーを取得する

元のCSVにはすでにこれらの見出しがあります。私は何が間違っているのか分かりません。私はRの完全な初心者ですので、明白でない場合は忍耐してください!与え

structure(list(N1 = c("Cambridge", "Cambridge", "Cambridge", 
"Cambridge", "Cambridge", "South Cambs", "South Cambs", "South Cambs", 
"South Cambs", "South Cambs", "Rest of East", "Rest of East", 
"Rest of East", "Rest of East", "Rest of East", "Rest of UK", 
"Rest of UK", "Rest of UK", "Rest of UK", "Rest of UK", "Abroad", 
"Abroad", "Abroad", "Abroad", "Abroad"), N2 = c("Cambridge", 
"South Cambs", "Rest of East", "Rest of UK", "Abroad", "Cambridge", 
"South Cambs", "Rest of East", "Rest of UK", "Abroad", "Cambridge", 
"South Cambs", "Rest of East", "Rest of UK", "Abroad", "Cambridge", 
"South Cambs", "Rest of East", "Rest of UK", "Abroad", "Cambridge", 
"South Cambs", "Rest of East", "Rest of UK", "Abroad"), Value = c(106068L, 
1616L, 2779L, 13500L, 5670L, 2593L, 138263L, 2975L, 4742L, 1641L, 
2555L, 3433L, 0L, 0L, 0L, 6981L, 3802L, 0L, 0L, 0L, 5670L, 1641L, 
0L, 0L, 0L)), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA, 
-25L), .Names = c("N1", "N2", "Value"), spec = structure(list(
    cols = structure(list(N1 = structure(list(), class = c("collector_character", 
    "collector")), N2 = structure(list(), class = c("collector_character", 
    "collector")), Value = structure(list(), class = c("collector_integer", 
    "collector"))), .Names = c("N1", "N2", "Value")), default = structure(list(), class = c("collector_guess", 
    "collector"))), .Names = c("cols", "default"), class = "col_spec")) 

STR(エッジ)::私のCSVファイルの

dputは、次のようになります

Classes ‘tbl_df’, ‘tbl’ and 'data.frame': 25 obs. of 3 variables: 
$ N1 : chr "Cambridge" "Cambridge" "Cambridge" "Cambridge" ... 
$ N2 : chr "Cambridge" "South Cambs" "Rest of East" "Rest of UK" ... 
$ Value: int 106068 1616 2779 13500 5670 2593 138263 2975 4742 1641 ... 
- attr(*, "spec")=List of 2 
    ..$ cols :List of 3 
    .. ..$ N1 : list() 
    .. .. ..- attr(*, "class")= chr "collector_character" "collector" 
    .. ..$ N2 : list() 
    .. .. ..- attr(*, "class")= chr "collector_character" "collector" 
    .. ..$ Value: list() 
    .. .. ..- attr(*, "class")= chr "collector_integer" "collector" 
    ..$ default: list() 
    .. ..- attr(*, "class")= chr "collector_guess" "collector" 
    ..- attr(*, "class")= chr "col_spec" 

答えて

0

私はあなたが必要なID列を残していることに問題があると考えているので、混乱してコマンド。

edges = rep(my_data, col.names = c("N1","N2","Value")) 
edges <- data.frame(edges) 
edges$ID <- 1:25 

nodes = data.frame(ID = unique(c(edges$N1, edges$N2))) 

river <- makeRiver(nodes, edges) 

上記のコードはエラーメッセージを排除します。繰り返されるエッジ情報に関して、無関係な警告が発生することに注意してください。

Warning message: 
In checkedges(edges, nodes$ID) : 
    duplicated edge information, removing 10 edges 
+0

ありがとうございます。これにより、エッジに4番目の列(ID)が追加されます。しかし、私がmakeRiver()行を実行すると、私は 'チェッカーのエラー(エッジ、ノード$ ID)を得ます:エッジはノードと同じIDを持つべきではありません。何らかの理由で、エッジの新しいID列から値を取得していました。私はそれから、ノードのフレームのIDをそれぞれ 'node < - data.frame(ID = c(" Cambridge "、" South Cambs "、" Rest of East "、" Rest of UK " "海外")) 'その後、私はあなたが言及した'重複するエッジ情報 'エラーを取得します。 – String

+0

@String問題がまだ残っている場合は、そのエラーに関する新しい質問を開始しましょう。あなたが新しい質問を始めるなら、私はそれを見逃さないようにここにリンクを入れてください。私は午前中にチェックします(今から約9時間後)。 –

+1

すごくおかげさまで、あなたはその問題の問題を解決しました。私は、ノードのxとyも定義していなかったので、後続の "重複エッジ"の問題があったと思います。私は別のものを持って進歩している。もう一度何かにこだわると、別の質問として投稿されます。 – String

関連する問題