我有一个表名列表,希望能够在R中可视化他们的关系。所以从表A到
的一行例如,如果我有一个数据框:
Col 1 Col 2 Col 3 Col 4
Table A | Table B | Table C |
Table Z | Table A | Table C | Table Y
Table K | Table L | Table M | Table B
Table J | Table H |
我之前使用igraph进行了映射,但我有不同的数据结构。只有两列:来自&至。如果我有这样的多列,有没有办法绘制图表?我在这方面找不到很多资源。
我希望创建一张地图。这将有从表A到表B和C的行,然后是从表A到表z以及表C和表Y的另一行,因为它们是相关的,等等。表J和表H之间只有一个连接彼此。
http://kateto.net/networks-r-igraph。 i图中的网络就是我想模仿的东西
答案 0 :(得分:0)
你的句子“所以从表A到”的一行终止,但如果它像那样结束,表B和表C“。不幸的是,{ {1}}仅适用于数字列表,因此您只需将数据转换为两列数据框:
您需要进行一些数据清理。如果您的数据位于数据框中,那么您需要使用 tidyr 的graph_from_adj_list
和group_by
函数,然后使用nest
函数迭代新的数据列,lapply
将列转换为行:
t
如果您的数据是在列表中组织的,那么您需要遍历每个列表项并从中创建数据框。然后,您需要使用library(igraph)
library(tidyverse)
al_tibble <- tibble(c1 = c('a', 'z', 'k', 'j'),
c2 = c('b', 'a', 'l', 'h'),
c3 = c('c', 'c', 'h', NA),
c4 = c(NA, 'y', 'b', NA))
el <- al %>%
group_by(c1) %>%
nest() %>%
mutate(data = lapply(data, t)) %>%
unnest() %>%
filter(!is.na(data))
g <- graph_from_data_frame(el)
bind_rows
答案 1 :(得分:0)
我在另一篇文章的帮助下想到了这一点:
plot(graph.data.frame(rbindlist(lapply(seq(ncol(test_a2)-1), function(i) test_a2[i:(i+1)]))))
test_a2只是一个包含多列的数据框
在这里,它将绘制前两列的图形,然后移动到第二列和第三列,等等。
我希望这可以帮助别人!