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

如何列出R中的所有图顶点属性?,r,igraph,R,Igraph,我正在使用R中的包 我希望将一些数据与每个顶点关联,例如,通过向每个顶点添加id和描述属性。这些属性是在运行时确定的。关于如何设置和获取这些数据,我有几个相关的问题 要设置顶点的id,我使用(其中g是一个图形): 我希望能够通过以下方式读回属性: > get.vertex.attribute(g,'id',1) 但是这个返回NULL。我做错什么了吗 此外,具有get.vertex.attribute调用的函数无权访问属性名称列表。如何从图形g中提取属性名称 最后,我想从命名列表中设置/获

我正在使用R中的包

我希望将一些数据与每个顶点关联,例如,通过向每个顶点添加id和描述属性。这些属性是在运行时确定的。关于如何设置和获取这些数据,我有几个相关的问题

要设置顶点的id,我使用(其中
g
是一个图形):

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

> get.vertex.attribute(g,'id',1)
但是这个返回NULL。我做错什么了吗

此外,具有
get.vertex.attribute
调用的函数无权访问属性名称列表。如何从图形
g
中提取属性名称

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


谢谢

看起来您必须将
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"
快速查看,似乎没有一个简单的函数可以整体写入/输出顶点属性。不过,你可以编造这样的东西:

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

使用以下语法就地指定顶点属性:

> V(g)[1]$id <- "first_id"
> V(g)[1]$id
[1] "aaa"
>V(g)[1]$id V(g)[1]$id
[1] “aaa”
此语法还允许您检索或设置所有顶点的顶点属性;只需省略索引:

> V(g)$id <- c("aa", "bb", "cc")

>V(g)$id这很有效,但您能帮我吗?:我在变量中只有属性名,例如idName=“id”。虽然
V(g)$id
运行良好,但是
V(g)[[idName]]]
给出了V(g)[[idName]]中的错误
error:subscript越界
。我应该如何使用idName引用它?谢谢我不是R方面的专家,所以我不知道是否有更简单的方法,但经过一些实验后,我发现这是可行的:
eval(parse(text=paste(“V(g)$”,varname,sep=”“)
)。这基本上是创建一个包含要计算的表达式的字符串,对其进行解析,然后调用
eval
对表达式进行计算。不,不能使用
V(g)$
执行此操作。这实际上与普通列表相同,如果
element
是变量名,则不能执行
list$element
。在这种情况下,您需要使用
get.vertex.attribute
set.vertex.attribute
。这必须是一个新功能,但以下命令对于提取所有顶点属性数据非常方便:get.data.frame()具有相同的体验。谢谢你的发帖。
> V(g)[1]$id <- "first_id"
> V(g)[1]$id
[1] "aaa"
> V(g)$id <- c("aa", "bb", "cc")