r - 使用孤立节点创建 igraph

标签 r igraph

我有一个类似的问题:Reading adjacency lists with isolated nodes using igraph

我想绘制一些没有关系的节点。但是由于某种原因,上面线程中提到的解决方案不起作用

我的数据

data <- data.frame(ID = c(143918,176206,210749,219170,247818,314764,321459,335945,339637,700689,712607,712946,735907,735907,735907,735907,735907,735907,735908,735908,735908,735908,735908,735908,735910,735911,735912,735913,746929,746929,747540,755003,767168,775558,776656,794173,794175,807493), relation = c(111098,210749,176206,NA,NA,NA,NA,NA,NA,807493,NA,NA,735908,735910,735911,735912,735913,767168,735907,735910,735911,735912,735913,767168,NA,NA,NA,NA,NA,100723,NA,NA,NA,776656,775558,NA,NA,700689))

这应该会产生一个也显示孤立节点的图:

v<-unique(data[,1])
e <- na.omit(data)

g<-graph.data.frame(e, vertices = v, directed = T)
plot(g)

出于某种原因,我收到错误消息:“边列表中的某些顶点名称未在顶点数据框中列出”。

我希望有人能告诉我我做错了什么以及如何解决这个问题。谢谢

编辑: paqmo 回答了我的问题,谢谢!

但是我的任务需要不同的方法。在关系中但在第一行中丢失的 ID 是位于不同位置的人。那些应该被省略,同时保留第一行的每个孤立的人。我的解决方案现在使用 data.table:

v <- unique(c(data[,1]))
v <- as.data.frame(v)
e <- data
setDT(v);setDT(e)
setkey(v)
setkey(e, relation)
e <- e[v]
e <- na.omit(e)
g<-graph.data.frame(e, vertices = v, directed = T)
plot(g)

任何关于更好/更有效解决方案的建议都将受到欢迎。

最佳答案

看起来您正在尝试提供两次顶点名称,即一次用于 e 中的第一列,然后再次作为参数 vertices = v

也许你真正要找的只是

g <- graph.data.frame(e, directed = T)
plot(g)

enter image description here

关于r - 使用孤立节点创建 igraph,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42673949/

相关文章:

r - 在 plotly (R) 中按另一列对条形图进行分组

重新连接加权图会产生 NA

igraph - igraph 使用的调色板是什么?

r - R 中的IGRAPH : Find the path between vertices that maximizes the product of edge attributes

R将多个数据表 append 到列表

r - KNNCAT错误 "some classes have only one member"

r - 更改数据框中某些列的名称

r - 将字符类型转换为逻辑类型

r - 如何将 "vertex sequence"的列表转换为向量

R 绘制非重叠最小生成树