Atributo de configuración de R igraph incorrectamente
Estoy intentando set_vertex_attribute
hacer un gráfico y noto que la función asigna atributos incorrectamente. Se han informado problemas similares aquí: R - Atributos de vértice - 'Valor inadecuado proporcionado en set.vertex.attribute'. Pero intenté cambiar el class
personaje sin suerte. ¿Cual podría ser el problema?
Datos:
crops <- structure(list(target = c("Angola", "Angola", "Bahrain",
"Benin", "Benin", "Bolivia"), source = c("Argentina",
"Botswana", "Bahrain", "Angola", "Bolivia", "Benin"), 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"))
com <- structure(list(name = c("Angola", "Argentina", "Bahrain", "Benin",
"Bolivia", "Botswana"), com = c(1L, 2L, 3L, 4L, 5L, 6L)), row.names = c(NA,
6L), class = "data.frame")
Código:
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)
Aceptado
Creo que deberías usar sort = FALSE
cuando merge
, por ejemplo,
nodes_com <- merge(nodes, com, by = "name", sort = FALSE)
y luego obtendrás
> df
name com
1 Angola 1
2 Bahrain 3
3 Benin 4
4 Bolivia 5
5 Argentina 2
6 Botswana 6
que tiene las mismas filas que encom
> com
name com
1 Angola 1
2 Argentina 2
3 Bahrain 3
4 Benin 4
5 Bolivia 5
6 Botswana 6