老板要办个会,本来让我们一个个去查文献,然后获取邮箱等去发邮件。我想偷个懒(“懒惰”是程序员的美德之一)找个R包,直接获取pubmed通讯作者的单位和邮箱,封装函数如下:
建议把pubmed语法先去pubmed搜以下然后再决定用哪个。我测试了以下一次好像最多提取500个文章。
参考
Pubmed语法
rm(list = ls())
#https://cran.r-project.org/web/packages/easyPubMed/vignettes/getting_started_with_easyPubMed.html
#install.packages("easyPubMed")
suppressMessages(library(easyPubMed))
out_dir<-"~/Desktop/pubmed"
dir.create(out_dir,recursive = T)
setwd(out_dir)
#maximine reference will be 500
get_author<-function(new_query){
my_entrez_id <- get_pubmed_ids(new_query)
my_abstracts_txt <- fetch_pubmed_data(my_entrez_id, format = "abstract")
my_abstracts_xml <- fetch_pubmed_data(pubmed_id_list = my_entrez_id)
my_PM_list <- articles_to_list(pubmed_data = my_abstracts_xml)
xx <- lapply(my_PM_list, article_to_df, autofill = TRUE, max_chars = 50)
full_df <- do.call(rbind, xx)
articals<-as.character(unique(full_df$pmid))
out_tab<-data.frame()
for (i in articals){
rt<-full_df[full_df$pmid==i,]
rrt<-rt[nrow(rt),]
out_tab<-rbind(out_tab,rrt)
}
return(out_tab)
}
#example
new_query_2016 <- 'lncRNAs[TIAB] AND Disease[TIAB] AND "2016"[PDAT])'
query_2016<-get_author(new_query=new_query_2016)
网友评论