我的总体目标是建立共同作者网络图。我有一份PubMed ID列表,这些是我对共同作者网络图表感兴趣的唯一出版物。我无法弄清楚如何使用rentrez在我的查询中同时获得作者姓名和各自的从属关系。我可以获得这两个信息,但是我的关联列表比我的作者列表少了300个,所以显然有些没有提供从属关系,但我无法弄清楚是谁。搜索作者和联盟的任何方式合并? [当我在entrez_fetch中做了两个时,它只是给了我一份作者和附属机构的列表,所以我仍然无法弄清楚哪些隶属关系属于哪些作者。]
library(tidyverse)
library(rentrez)
library(XML)
trial<-entrez_fetch(db="pubmed", id=pub.list$PMID, rettype="xml", parsed=TRUE)
affiliations<-xpathSApply(trial, "//Affiliation", xmlValue)
first.names<-xpathSApply(trial, "//Author/ForeName", xmlValue)
这一切都运作正常,但由于长度不同,我无法弄清楚哪些作者与哪些隶属关系。
非常感谢任何帮助。谢谢!
答案 0 :(得分:1)
您可以尝试以下方式:
xpathSApply(trial, "//Author", function(x) {
author_name <- xmlValue(x[["LastName"]])
author_affiliation <- xmlValue(x[["AffiliationInfo"]][["Affiliation"]])
c(author_name,author_affiliation)
})
通过获取每个//Author
节点的这些值,它在第一行中返回作者的姓氏,在第二行中返回它们的从属关系。
答案 1 :(得分:0)
last.name<-xpathSApply(trial, "//Author", function(x) {
author_name <- xmlValue(x[["LastName"]])})
affiliation<-xpathSApply(trial, "//Author", function(x) {
author_affiliation <- xmlValue(x[["AffiliationInfo"]][["Affiliation"]])})
这是我最终使用的,遵循NicE的格式并且它有效 - 我可以看到NA的联盟现在在哪里。
答案 2 :(得分:0)
我接受了@NicE的代码和@Shirley的注释,并编写了这段代码:
lastname_affiliation <-data.frame(cbind(
xpathSApply(trial, "//Author", function(x) {
author_name <- xmlValue(x[["LastName"]])
}),
xpathSApply(trial, "//Author", function(x) {
author_affiliation <- xmlValue(x[["AffiliationInfo"]][["Affiliation"]])
})
))
感谢您使我走上正确的道路。