如何在R中列出所有图形顶点属性?

Rac*_*ole 12 r igraph

我在R中使用igraph包.

我想将一些数据与每个顶点相关联,例如通过向每个顶点添加id和description属性.属性在运行时确定.关于如何设置和获取此数据,我有几个相关的问题.

要设置顶点的id我使用(where g是图形):

> set.vertex.attribute(g,'id',1,'first_id') # etc
Run Code Online (Sandbox Code Playgroud)

我希望能够通过以下方式读取属性:

> get.vertex.attribute(g,'id',1)
Run Code Online (Sandbox Code Playgroud)

但是这会返回NULL.难道我做错了什么?

此外,具有该get.vertex.attribute调用的函数不能访问属性名称列表.如何从图表中提取属性名称g?

最后,我想从/到命名列表中设置/获取属性的值.是否有一种简单的方法可以在不循环遍历每个顶点和属性并应用set.- 或get.vertex.attribute?

谢谢!

the*_*ail 13

看起来你必须分配结果set.vertex.attribute回g像这样:

g <- graph.data.frame(data.frame(one=1:2,two=2:3))
g <- set.vertex.attribute(g,'id',1,'first_id')
get.vertex.attribute(g,'id',1)
#[1] "first_id"
Run Code Online (Sandbox Code Playgroud)

正如帮助?get.vertex.attribute所说:

graph:要处理的图形对象.请注意,原始图形永远不会被修改,而是返回一个新的图形对象; 如果您不将其分配给变量,您的修改将会丢失!见下面的例子.

此外,从相同的帮助文件中有...

list.graph.attributes,list.vertex.attributes和list.edge.attributes返回一个字符向量,即存在的属性的名称.

list.vertex.attributes(g)
#[1] "name" "id"  
Run Code Online (Sandbox Code Playgroud)

从快看那里似乎不是一个简单的函数写输入/输出顶点属性集体.你可以编写类似这样的东西:

lapply(list.vertex.attributes(g),function(x) get.vertex.attribute(g,x))
#[[1]]
#[1] "1" "2" "3"
# 
#[[2]]
#[1] "first_id" NA         NA  
Run Code Online (Sandbox Code Playgroud)


Tam*_*más 7

使用以下语法就​​地分配顶点属性:

> V(g)[1]$id <- "first_id"
> V(g)[1]$id
[1] "aaa"
Run Code Online (Sandbox Code Playgroud)

此语法还允许您检索或设置所有顶点的顶点属性; 只是省略索引:

> V(g)$id <- c("aa", "bb", "cc")
Run Code Online (Sandbox Code Playgroud)