我有一个关于组合两个csv.files的问题 - 一个是edgelist和。{ 另一个nodelist。我想把它们组合起来(graph.data.frame)和它 应该是有向图。我使用的是r版本3.2.3 / rstudio版本 0.99.879和igraph版本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")