【发布时间】:2014-12-07 01:13:03
【问题描述】:
我有一个带有图形邻接列表的 output.csv 文件。格式如下..
每一行都以源节点(一个整数)开头,然后是它所连接的节点。节点通过空格 (' ') 分隔符彼此分隔并与源节点分隔。
快照如下:
0 2 5 8
1 2 7 4 6
2 0 1
3 4 7 8
4 1 3
我想把它读成邻接列表格式并用它在 igraph 中绘图。最简单的方法是什么?谢谢..
【问题讨论】:
-
如果没有更多细节,您可能应该尝试
dat <- read.csv("yourfile.csv"),它会给出一个数据框。试试str(dat)看看。然后可能是M <- as.matrix(dat)。这将适用于igraph。如果行名和列名对您很重要(可能很重要),请编辑您的问题并粘贴到dput(head(dat))的结果中。 -
您好感谢您的快速回答!我完全按照您所说的进行了尝试,它确实读入了矩阵 M,但出现以下错误 Error in .Call("R_igraph_adjlist", adjlist, mode, duplicate, PACKAGE = "igraph") : At structure_generators.c:84 : Invalid (negative) vertex id, Invalid vertex id 另外:警告消息:我使用我的文件 test.csv 看起来与以下 0 2 5 完全相同; 1 2 4; 2 0 1; 3 4; 4 1 3; 5 0;谢谢!
-
好的,如果文件很大,请发布
dput(dat)或dput(head(dat)),我们将从那里进行故障排除。 -
不,文件不大,因为我只使用我提到的小快照。输出如下
structure(list(V1 = structure(1:6, .Label = c("0 2 5 ", "1 2 4", "2 0 1", "3 4", "4 1 3", "5 0"), class = "factor")), .Names = "V1", class = "data.frame", row.names = c(NA, -6L)) -
嗯...这是一个非常奇怪的结构。回到 csv,确保它确实是 csv,而不是说一些 Excel 原生格式。在读入期间检查
?read.csv的详细信息以获取选项。看起来它在三列中作为一个奇怪的条目读取并将其放入一列。还要通过数字检查 csv 中的隐藏空间。此外,如果存在缺失值(似乎存在),则可以在 csv 中将它们编码为NA。然后尝试再次读入。检查分隔符是什么 - 默认是逗号,也许你有空格。
标签: r igraph adjacency-list