通过id将节点属性合并到igraph上
我有以下数据:通过id将节点属性合并到igraph上,r,igraph,R,Igraph,我有以下数据: > df source target weight 1 1 2 1 2 1 3 1 3 1 4 1 4 2 4 2 5 3 4 5 呈现为图形: g <- graph.data.frame(df, directed=TRUE) > g IGRAPH 99903f8 DNW- 4 5 -- + attr:
> df
source target weight
1 1 2 1
2 1 3 1
3 1 4 1
4 2 4 2
5 3 4 5
呈现为图形:
g <- graph.data.frame(df, directed=TRUE)
> g
IGRAPH 99903f8 DNW- 4 5 --
+ attr: name (v/c), weight (e/n)
+ edges from 99903f8 (vertex names):
[1] 1->2 1->3 1->4 2->4 3->4
创建并渲染到图形后,我想向节点添加一个额外的数据字段,其中源或目标的id与meta.id数据框中的id匹配
不幸的是,我现在所做的似乎产生了很多额外的匹配。如何要求它合并/仅合并/到顶点属性上,并且仅在匹配的位置合并
例如,这似乎没有合并,只是附加了所有内容:
> V(g)$name <- meta
> g
IGRAPH 99903f8 DNW- 4 5 --
+ attr: name (v/x), weight (e/n)
+ edges from 99903f8 (vertex names):
[1] 1, 2, 3, 4->2, 4, 3, 1 1, 2, 3, 4->1, 2, 3, 4 1, 2, 3, 4->2, 4, 3, 1
[4] 2, 4, 3, 1->2, 4, 3, 1 1, 2, 3, 4->2, 4, 3, 1
>V(g)$name g
IGRAPH99903F8 DNW-4 5--
+属性:名称(v/x)、重量(e/n)
+99903f8中的边(顶点名称):
[1] 1, 2, 3, 4->2, 4, 3, 1 1, 2, 3, 4->1, 2, 3, 4 1, 2, 3, 4->2, 4, 3, 1
[4] 2, 4, 3, 1->2, 4, 3, 1 1, 2, 3, 4->2, 4, 3, 1
更新
看起来这就成功了:
V(g)$name <- meta[V(g) == meta$id, c("name")]
V(g)$name也许您正在寻找set\u vertex\u attr
:
库(igraph)
g%
设置顶点属性(“名称”,索引=meta$id,值=meta$name)
G
#>IGRAPH75F44E5 DNW-4 5--
#>+属性:名称(v/c)、重量(e/n)
#>+来自75f44e5的边(顶点名称):
#>[1]弗雷德->萨利·弗雷德->吉尔·弗雷德->埃莉诺·萨利->埃莉诺
#>[5]吉尔->埃莉诺
地块(g)
数据
df您能帮我了解一下管道安装前是如何完成的吗?如果我试着用两个步骤来做这件事,我会得到I_set_vertex_attr(“name”,index=meta$id,value=meta$name)中的错误(graph=graph,name=name,index=index,:nota graph object
得到了:set.vertex.attribute(g,'name',meta$id,meta$name)@Mittenchops:事实上,如果没有管道操作符,你可以写g
V(g)$name <- meta[V(g) == meta$id, c("name")]
1: In V(g) == meta$id :
longer object length is not a multiple of shorter object length
2: In length(vattrs[[name]]) <- vc : length of NULL cannot be changed
3: In V(g) == meta$id :
longer object length is not a multiple of shorter object length
4: In length(vattrs[[name]]) <- vc : length of NULL cannot be changed