我正在尝试使用 R 中的 Riverplot 包制作桑基图,但我收到有关边缘框架中列名的错误消息。
我正在安装 readr 和 riverplot 包,然后这样做:
> 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))
但是在设置河图对象“河”的倒数第二个命令中,我收到此错误:
Error in checkedges(edges, nodes$ID)
edges must have the columns N1, N2 and Value
原始 CSV 已经有这些列标题。我不确定我做错了什么。我是 R 的新手,所以如果我遗漏了明显的内容,请耐心等待!
我的 CSV 文件中的 dput 如下所示:
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(edges) 给出:
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"