R中约束{igraph}的输出文件

问题描述 投票:0回答:3

我正在 R 中使用 igraph 包来计算每个顶点的 Burt 约束(http://www.inside-r.org/packages/cran/igraph/docs/constraint)。

运行命令

constraint(g, weights=NULL)
得到的输出如下:

       vertex1    vertex2    vertex3    vertex4    vertex5    vertex6    vertex7
    1.00000000 0.50000000 0.50000000 1.00000000 1.00000000 1.00000000 0.29986736
       vertex8    vertex9   vertex10   vertex11   vertex12   vertex13   vertex14
    1.00000000 1.00000000 0.25000000 1.00000000 1.00000000 0.50000000 1.00000000
       ...
    vertex1000
    0.25000000

我的问题是如何将其导出到具有以下结构的 xlsx(或 csv、txt)文件中:

vertex1 1.00000000
vertex2 0.50000000
vertex3 0.50000000
...
vertex1000 0.25000000

非常感谢您的解决方案。

r igraph
3个回答
1
投票

感谢您的意见 MrFlick。我找到了答案。它比仅使用

data.frame
稍微复杂一些。我发布了将 Burt 的约束结果从 R 中的
igraph
包转换为下面的顶点约束形式的代码:

library("igraph")
library("reshape2")
edge_list=read.delim("your_valued_edgelist.txt")
g=graph.data.frame(edge_list, directed=FALSE, vertices=NULL)
x<-capture.output(melt(constraint(g, weights=NULL)))
x$id <- rownames(x)
x[1] <- NULL
y<-data.frame(vertex_id=substr(x,1,6), constraint_score=as.numeric(substr(x,8,13)))
write.table(y, file = "your_outcome.txt", col.names = TRUE, row.names = FALSE, sep="\t")

就我而言,我必须按前六个字符

substring
我的vertex_id。


0
投票

如果将结果保存到变量

x
,请尝试

write.csv( data.frame(vertex=names(x), value=x), "out.csv", row.names=FALSE)

0
投票

我尝试了@giorgioconti 的方法,但它只显示 1000 个节点,即使我有超过 2k 个节点。有人可以告诉我如何在使用时获取完整的节点集吗

capture.output(melt(constraint(g,weights=NULL)))

谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.