R igraph 设置属性不正确

问题描述 投票:0回答:1

我正在尝试

set_vertex_attribute
绘制图表,并注意到该函数错误地分配了属性。这里也报告了类似的问题:R - 顶点属性 - 'set.vertex.attribute 中给出的值不合适。' 但我尝试将
class
更改为字符,但没有运气。可能是什么问题?

数据:

crops ← structure(list(target = c("Afghanistan", "Afghanistan", "Afghanistan",
"Afghanistan", "Afghanistan", "Afghanistan"), source = c("Argentina",
"Brazil", "Iran", "Kazakhstan", "Pakistan", "Paraguay"), weight = c(112858157.048368,
45859551593.4988, 70972664.5057742, 1291072130433.34, 70268376116.3827,
410763090.329797)), row.names = c(NA, -6L), class = c("data.table",
"data.frame"), .internal.selfref = <pointer: 0x000001abd6070150>)

com <- structure(list(name = c("Angola", "Argentina", "Bahrain", "Benin",
"Bolivia", "Botswana"), com = c(1L, 1L, 1L, 1L, 1L, 1L)), row.names = c(NA,
6L), class = "data.frame")

代码:

g <- graph.data.frame(crops, directed=TRUE)

nodes <- get.data.frame(g, what = "vertices")

nodes_com <- merge(nodes,com, by = "name")

nodes_com$com <-  as.character(nodes_com$com)

g <- set_vertex_attr(g, "com", value = nodes_com$com) 

#validation test - here I discover V(g)$com is different than in nodes_com
df <- data.frame(name = V(g)$name, com = V(g)$com) 
r attributes igraph vertex
1个回答
0
投票

我认为你应该使用

nodes_com <- merge(nodes, com, by = "name", all.x = TRUE)

然后你将获得

> df
         name  com
1 Afghanistan <NA>
2   Argentina    1
3      Brazil <NA>
4        Iran <NA>
5  Kazakhstan <NA>
6    Pakistan <NA>
7    Paraguay <NA>
© www.soinside.com 2019 - 2024. All rights reserved.