如何使用gml格式文件将igraph边缘属性设置为字符串?

时间:2017-09-16 15:42:12

标签: r igraph

我使用GML图形文件格式将图形读入igraph(R版本)。有没有办法将边缘属性设置为字符串?似乎某些属性标签允许具有字符串值,而其他属性标签则不允许。示例输入文件:

graph [
node [
    id 1
    control 1
    label "CiscoSW-1"
]
node [
    id 2
    control 1
    label "CiscoSW-z"
]
edge [
    source 1
    target 2
    difficulty 'A,B,C'
    label "CiscoSW-1"
]
]

1 个答案:

答案 0 :(得分:2)

似乎read_graph不喜欢单引号' ',因此您需要将它们换成双引号" "

执行此操作的一种方法是通过读取文件,gsub输出违规报价,然后使用read_graph再次读取。因此,如果您的图表文件保存为so.gml,那么

# Read in file, `gsub` quotes and write to tempfile()
r <- gsub("[']", "\"", readLines("so.gml"))
cat(r, file=temp<-tempfile())

# Read amended gml file 
g <- read_graph(temp, format="gml")

检查边缘属性是否符合预期

edge.attributes(g)