【问题标题】:import an undirected graph in R from text file从文本文件中导入 R 中的无向图
【发布时间】:2017-01-05 13:01:00
【问题描述】:

The output 我在读取 R 中的无向图时遇到问题,我尝试将其从包含大量边(约 1000 条)的文本文件“graph.txt”导入到 R,但问题是:

R 没有从文本文件中读取整个图形,它忽略了大量边 我按照我在 R 教程中找到的步骤以及本网站上的相关先前问题进行了操作,但我无法修改它。

graph.txt 看起来像:

383 886 
777 915 
793 335 
386 492 
649 421 
362 27 
690 59 
763 926 
540 426 
172 736 
211 368 
567 429 
782 530

以及我使用的函数:

library("igraph")
dd<-scan("graph.txt")
gg<-read_graph("graph.txt",directed=FALSE)
gg

结果如下:

... 763-- 785 326-- 984 946-- 946 326--1103 326-- 592 698--1636 326--1807
+ ... omitted several edges

请帮助 R 从 txt 文件中导入全部边数

提前致谢

P.S:我正在尝试仅将数据作为图形导入(不是表格或矩阵),以使用以下函数计算图形的直径:

diameter(graph, directed = FALSE, weights = NULL)

【问题讨论】:

  • 你能举一个你输入的txt文件的例子吗?
  • 实际上你确定它没有被正确读取,而不仅仅是它在屏幕上的显示方式?看看这个例子:g = igraph::erdos.renyi.game(100, 0.5) ; g。如果你做E(g)(或length(E(g)))你会看到有多少边。
  • 还要仔细检查它不是打印方法,您可以在运行以下命令后尝试查看边缘:options(max.print = length(E(g))) ; print(E(g), TRUE)
  • 我认为上面 user20650 的猜测是正确的,因为该图实际上加载得很好,但是当您将 g 打印到屏幕上时,您只会看到所有边缘的截断列表。检查length(E(g)) 和(在unix 命令行上)wc -l graph.txt 是否相同;如果是这样,那么一切都加载正常。
  • @user20650 是的,它有效,长度为 1000...非常感谢帮助

标签: python r graph network-programming igraph


【解决方案1】:

我通常会先导入文件,然后将其转换为图形以确保安全。所以

library(igraph)
f <- read.table(file = "graph.txt")
edges <- c()
for (e in 1:dim(f)[1]){
  edges <- append(edges, c(f[e, 1], f[e, 2]))
}
g <- graph(edges, directed = FALSE)
g
#IGRAPH U--- 926 13 -- 
#+ edges:
#[1] 383--886 777--915 335--793 386--492 421--649  27--362  59--690 763--926 426--540 172--736
#[11] 211--368 429--567 530--782

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-23
    • 1970-01-01
    • 2018-12-20
    • 2021-01-09
    • 2018-11-11
    • 2017-07-17
    • 2016-11-15
    • 2021-10-08
    相关资源
    最近更新 更多