【发布时间】:2019-01-28 03:44:33
【问题描述】:
我正在尝试创建一个双模网络,我想在其中向单模节点添加标签。我的数据看起来像:(见帖子末尾)
我不能用这个名字代替,因为我正在处理的一些数据没有唯一的名字,只有 ID 号。我正在使用 iGraph
我尝试了几种不同的方法,最接近的方法如下:
Test <- read_delim("Test.csv", ";", escape_double = FALSE,
col_names = FALSE, trim_ws = TRUE)
df <- Test %>% select(Mode1, Mode2)
g <- graph.edgelist(as.matrix(df, directed = F)
g <- set_vertex_attr(g, "name", index = V(g), as.character(Test$Name))
我希望这能让我写作:
plot(g, vertex.label = V(g)$name)
并将名称作为标签出现, 但我在写作时收到一条错误消息:
g <- set_vertex_attr(g, "name", index = V(g), as.character(Test$Name))
说:
In vattrs[[name]][index] <- value :
number of items to replace is not a multiple of replacement length
数据:
Test <- structure(list(Mode1 = c("1", "1", "1", "2", "2", "2", "2", "3",
"3", "3"), Mode2 = c("11", "12", "13", "14", "12", "16", "17",
"18", "29", "11"), Name = c("A", "A", "A", "B", "B", "B", "B",
"C", "C", "C")), .Names = c("Mode1", "Mode2", "Name"), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -10L), spec = structure(list(
cols = structure(list(Mode1 = structure(list(), class = c("collector_character",
"collector")), Mode2 = structure(list(), class = c("collector_character",
"collector")), Name = structure(list(), class = c("collector_character",
"collector"))), .Names = c("Mode1", "Mode2", "Name")), default = structure(list(), class = c("collector_guess",
"collector"))), .Names = c("cols", "default"), class = "col_spec"))
【问题讨论】:
-
您现在创建图表的方式,创建了许多断开连接的节点。你的意思是(例如,你的意思是有一个名为 8 和 25 的节点)还是你只想要 edgelist 中提到的节点?此外,您的数字连续从 11 到 18,然后是 29。您的意思是 29 还是 19?您要标记模式 1 还是模式 2?
-
啊,我现在更改了数据,所以现在我应该更有意义了。我想拥有 Mode1 上的名字
-
改进。谢谢!