我正在尝试绘制蜂窝图,从而可视化网络。我正在使用";HiveR";包裹这是我的代码:
library(HiveR)
hive1 <- edge2HPD(edge_df = relations_tot)
但我得到了以下错误:
Error in HPD$edges$id2[n] <- grep(pat2, HPD$nodes$lab) :
replacement has length zero
我的数据集是:
> dput(relations_tot)
structure(list(lab1 = c("Austria", "Austria", "Austria", "Austria",
"Austria", "Austria", "Austria", "Austria", "Austria", "Austria",
"Austria", "Austria", "Austria", "Austria", "Austria", "Austria",
"Austria", "Austria", "Austria", "Austria", "Austria", "Belgium",
"Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium",
"Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium",
"Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium",
"Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium",
"Belgium", "Belgium", "Belgium", "Belgium", "Belgium", "Belgium",
"Belgium", "Belgium", "Cyprus", "Cyprus", "Cyprus", "Cyprus",
"Cyprus", "Cyprus", "Cyprus", "Cyprus", "Cyprus", "Cyprus", "Cyprus",
"Cyprus", "Cyprus", "Cyprus", "Cyprus", "Estonia", "Estonia",
"Estonia", "Estonia", "Estonia", "Estonia", "Estonia", "Estonia",
"Estonia", "Estonia", "Estonia", "Finland", "Finland", "Finland",
"Finland", "Finland", "Finland", "Finland", "Finland", "Finland",
"Finland", "Finland", "Finland", "Finland", "France", "France",
"France", "France", "France", "France", "France"), lab2 = c("Finland",
"Germany", "Greece", "Italy", "Latvia", "Netherlands", "Slovakia",
"Slovenia", "Bulgaria", "Croatia", "Denmark", "Hungary", "Poland",
"Romania", "Sweden", "United Kingdom", "Africa", "Asia", "Europe (rest of)",
"North America", "South America", "Austria", "Cyprus", "Estonia",
"Finland", "France", "Germany", "Greece", "Ireland", "Italy",
"Latvia", "Lithuania", "Luxembourg", "Malta", "Netherlands",
"Portugal", "Slovakia", "Slovenia", "Spain", "Bulgaria", "Croatia",
"Czech Republic", "Denmark", "Hungary", "Poland", "Romania",
"Sweden", "United Kingdom", "Africa", "Asia", "Europe (rest of)",
"North America", "Oceania ", "South America", "Austria", "Belgium",
"France", "Germany", "Greece", "Latvia", "Malta", "Netherlands",
"Spain", "Africa", "Asia", "Europe (rest of)", "North America",
"Oceania ", "South America", "Austria", "Finland", "Latvia",
"Lithuania", "Netherlands", "Denmark", "Sweden", "United Kingdom",
"Africa", "Europe (rest of)", "North America", "Belgium", "Estonia",
"Germany", "Italy", "Latvia", "Netherlands", "Denmark", "Sweden",
"United Kingdom", "Africa", "Asia", "Europe (rest of)", "South America",
"Austria", "Belgium", "Germany", "Greece", "Ireland", "Italy",
"Lithuania"), weight = c(1289230, 570990, 1490, 831013, 1085.99999999999,
3203, 669, 4904, 293468, 2568, 290, 87319, 22525, 1529, 63118,
15492, 38605, 40154.9999999999, 546517, 33217, 389, 171838, 2092788,
4540193, 3622359, 109906515, 234046234, 4574268, 1903145, 60966459,
1195178, 19822660, 95858806, 225985, 204163356, 31413980, 912207,
487192, 54082177, 3919672, 7418114, 28661212, 4477883, 2138933,
182520811, 46548202.9999999, 12146816, 30102392.9999999, 18650084,
140902264, 191564127, 13024827, 6892758, 1667997, 479381, 24555,
403645.999999999, 5062028, 3121531, 1919599, 391523, 39, 86360,
1828518, 29985695, 3965455, 668100, 488828.999999999, 211750.999999999,
11055, 3629498, 394460, 885.999999999999, 107, 915.999999999999,
293220, 17, 55415, 72889, 6911, 7707, 1733272, 15606, 35273,
210, 13813, 148, 52928, 8, 30998, 86, 314416, 152, 127728, 32827032,
21213714, 6768593.99999999, 92478, 8853066, 5598)), row.names = c(4L,
6L, 7L, 9L, 10L, 14L, 16L, 17L, 19L, 20L, 22L, 23L, 24L, 25L,
26L, 27L, 28L, 29L, 30L, 31L, 33L, 34L, 35L, 36L, 37L, 38L, 39L,
40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L, 51L, 52L,
53L, 54L, 55L, 56L, 57L, 58L, 59L, 60L, 61L, 62L, 63L, 64L, 65L,
66L, 67L, 68L, 71L, 72L, 73L, 76L, 79L, 80L, 84L, 94L, 95L, 96L,
97L, 98L, 99L, 100L, 103L, 109L, 110L, 113L, 121L, 125L, 126L,
127L, 129L, 130L, 134L, 136L, 138L, 141L, 142L, 146L, 154L, 158L,
159L, 160L, 161L, 162L, 165L, 166L, 167L, 171L, 172L, 173L, 174L,
176L), class = "data.frame")
问题与此有关:带有括号的R grep模式regex
grep
无法用您的函数处理带有排列的正则表达式。
当为lab1
或lab2 == "Europe (rest of)"
时,则不返回匹配项。
我建议你把";欧洲(其他地区(";用";欧洲其他地区";在运行edge2HPD
之前,例如使用str_replace
。