我正在尝试
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)
我认为你应该使用
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>