结合edgelist和nodelist(带顶点的错误)igraph

时间:2017-06-25 22:03:15

标签: r igraph sna

我有一个关于组合两个csv.files的问题 - 一个是和。{ 另一个。我想把它们组合起来(graph.data.frame)和它 应该是有向图。我使用的是版本3.2.3 / 版本 0.99.879和版本1.0.1。

此数据的示例如下所示:

libary(igraph)
nodes <- read.csv("data_n.csv", header = TRUE, row.names = 1, sep =";")
links <- read.csv("data_l.csv", header = TRUE, row.names = 1, sep =";")
head(nodes)
  Authors               Institution            status    gender
1 Jan Christoph Suntrup Käte Hamburger Kolleg  Post Doc    M
2 Renate Martinsen      Uni Duisburg-Essen     Prof        F
3 Bernd Ladwig          FU Berlin              Prof        M
4 Kathrin Morgenstern   Uni Regensburg       PhD student   F
5 Barbara Weber         Uni Regensburg         Prof        F

head(links)
From.Author1          To.Author2       relation   text.type 
1 Kathrin Morgenstern   Barbara Weber   undirect   Review  
2 Barbara Weber    Kathrin Morgenstern  undirect   Review
3 Andreas Busen        Paul Sörensen    undirect   other
4 Andreas Busen        Lisa Herzog      direct     other
5 Matthias Lemke    Gregor Wiedemann    undirect   other

正如你所看到的,有些演员有相互关系,有些演员有 与另一个演员有联系并且还有孤立的节点。

通过将edgelist和nodelist与graph.data.frame组合,我收到以下错误:

g1 <- graph.data.frame(d=links, vertices = nodes, directed = T)
Error in graph.data.frame(links, vertices = nodes, directed = T) : Some
vertex names in edge list are not listed in vertex data frame

我检查过失踪的作者,我现在很确定每个演员 来自节点列表的边缘列表中至少列出一次。我也 在igraph中为edgelist中的孤立作者创建循环 不能治疗&#39; NA&#39;在To.Author2&#39; (我稍后会使用简化来 remove.loops)。但这些想法并未解决错误。

我搜索了解决方案并找到了一个建议here,其中答案与this相关(都在stackoverflow上)。

通过遵循该指令,生成的图形对象占据优势 属性但不包含节点属性。

那么,我怎么能分别解决这个错误呢?

期待您的建议和意见!
任何帮助表示赞赏!

编辑 - 提供节点列表和边缘列表的样本

dput(head(nodes, 15))
structure(list(no = 1:15, Authors = c("Jan Christoph Suntrup", 
"Renate Martinsen", "Bernd Ladwig", "Kathrin Morgenstern", "Barbara Weber", 
"Claudia Ritter", "Maik Herold", "Eva Marlene Hausteiner", "Andreas Busen", 
"Matthias Lemke", "Cord Schmelzle", "Daniel Jacob", "Oliver Flügel Martinsen", 
"Kari Palonen", "Thomas Schölderle"), Institution = c("Käte Hamburger Kolleg ", 
"Uni Duisburg-Essen", "FU Berlin", "Uni Regensburg", "Uni Regensburg", 
"Uni Kassel", "TU Dresden", "HU Berlin", "Uni Hamburg", "HSU Hamburg", 
"FU Berlin", "FU Berlin", "Uni Bielefeld", "Uni Jyväskylä", "Akademie Tutzing"
), status = c("Post Doc", "Prof", "Prof", "PhD student", "Prof", 
"Post Doc", "PhD student", "PhD student", "PhD student", "Post Doc", 
"Post Doc", "PhD student", "Post Doc", "Prof", "Post Doc"), gender = c("M", 
"F", "M", "F", "F", "F", "M", "F", "M", "M", "M", "M", "M", "M", 
"M")), .Names = c("no", "Authors", "Institution", "status", "gender"
), row.names = c(NA, 15L), class = "data.frame")

dput(head(links, 15))
structure(list(From.Author1 = c("Kathrin Morgenstern", "Barbara Weber", 
"Andreas Busen", "Andreas Busen", "Matthias Lemke", "Matthias Lemke", 
"Cord Schmelzle", "Cord Schmelzle", "Cord Schmelzle", "Cord Schmelzle", 
"Cord Schmelzle", "Cord Schmelzle", "Cord Schmelzle", "Cord Schmelzle", 
"Daniel Jacob"), To.Author2 = c("Barbara Weber", "Kathrin Morgenstern", 
"Paul Sörensen", "Lisa Herzog", "Gregor Wiedemann", "Andreas Niekler", 
"Eva Marlene Hausteiner", "Daniel Jacob", "Thorsten Thiel", "Ulrike Spohn", 
"Christian Volk", "Susanne Schmetkamp", "Maike Weißpflug", "Andreas Oldenbourg", 
"Eva Marlene Hausteiner"), relation = c("undirect", "undirect", 
"undirect", "undirect", "undirect", "undirect", "direct", "direct", 
"direct", "direct", "direct", "direct", "direct", "direct", "direct"
), text.type = c("Review", "Review", "other", "other", "other", 
"other", "Acknowledgement", "Acknowledgement", "Acknowledgement", 
"Acknowledgement", "Acknowledgement", "Acknowledgement", "Acknowledgement", 
"Acknowledgement", "Acknowledgement"), no = 1:15), .Names = c("From.Author1", 
"To.Author2", "relation", "text.type", "no"), row.names = c(NA, 
15L), class = "data.frame")

0 个答案:

没有答案