首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的Riverplot包-边列名称中的错误

R中的Riverplot包-边列名称中的错误
EN

Stack Overflow用户
提问于 2016-12-04 23:10:11
回答 1查看 635关注 0票数 1

我试图使用R中的Riverplot包来创建一个Sankey图,但是我得到了关于边框中的列名的错误消息。

我正在安装readr和readr绘图包,然后执行以下操作:

代码语言:javascript
复制
> 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))

但是,在倒数第二个命令中,设置河边对象"river“时,我得到了以下错误:

代码语言:javascript
复制
Error in checkedges(edges, nodes$ID)
  edges must have the columns N1, N2 and Value

最初的CSV已经有了这些列标题。我不知道我做错了什么。我是一个完全的新手R,所以请耐心,如果我错过了显而易见的!

在我的CSV文件上放置如下所示:

代码语言:javascript
复制
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"))

(边)给出:

代码语言:javascript
复制
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"
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-05 00:24:35

我认为问题在于您忽略了所需的ID列,从而混淆了命令。

代码语言:javascript
复制
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) 

上面的代码消除了错误消息。请注意,对于重复的边缘信息,它会引发一个无关的警告。

警告消息:在检查中(边,节点$ID):重复的边缘信息,删除10条边

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40964821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档