Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过id将节点属性合并到igraph上_R_Igraph - Fatal编程技术网

通过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