【问题标题】:Using write.graph in igraph to output a .net file在 igraph 中使用 write.graph 输出 .net 文件
【发布时间】:2014-12-08 00:48:00
【问题描述】:

我认为我在这里遗漏了相当简单的内容,但是在 R 的 igraph 包中向 write.graph 函数添加参数的语法是什么?我正在尝试将网络输出到带有加权边和 ID 的 pajek 格式文件(.net)。我尝试了以下命令,但不断收到错误消息(“Unknown arguments to write.graph(Pajek 格式)。”):

write.graph(weightedg,file="musGiant2012.net", format="pajek",'weight')
write.graph(weightedg,file="musGiant2012.net", format="pajek", id=TRUE)
write.graph(weightedg,file="musGiant2012.net", format="pajek", ("id"))

还有很多其他的。我很确定我犯了一个简单的语法错误,但找不到任何关于如何纠正它的指导。

【问题讨论】:

  • 错误信息是什么?它们可能会提供丰富的信息。
  • write.graph 的未知参数(Pajek 格式)。每次都一样。这就是为什么我猜这只是一个语法问题。我也尝试添加 args=,但没有奏效。
  • 这是一个完全的猜测,但我认为您只需要在图表本身上设置权重和 ID,然后不要传递任何超出 format="pajek" 的参数。
  • @thelatemail:这是一个很好的猜测。 :)

标签: r igraph


【解决方案1】:

来自http://igraph.org/r/doc/write.graph.html 的文档:

Pajek 格式是一个文本文件,有关详细信息,请参阅 read.graph。适当的顶点和边属性也被写入文件。这种格式没有额外的参数。

http://igraph.org/r/doc/read.graph.html 表明支持边权重,也支持顶点 ID。因此,如果您将顶点 id 作为名为 id 的属性,并将边权重作为名为 weight 的属性,那么您不需要任何额外的参数。例如

library(igraph)
g <- graph.ring(5)
V(g)$id <- letters[1:5]
E(g)$weight <- runif(ecount(g))

tmp <- tempfile()
write.graph(g, file = tmp, format = "pajek")

cat(readLines(tmp), sep = "\n")

#> *Vertices 5
#> 1 "a"
#> 2 "b"
#> 3 "c"
#> 4 "d"
#> 5 "e"
#> *Edges
#> 1 2 0.054399197222665
#> 2 3 0.503386947326362
#> 3 4 0.373047293629497
#> 4 5 0.84542120853439
#> 1 5 0.610330935101956

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    相关资源
    最近更新 更多