Google Scholar 可能是了解一位作者最好的途径了(如果他有账号的话,因为这里的list一般比较全。但由于没有ORCID一类的标识符,也可能出现不是该作者的文章)。scholar包提供从 Google Scholar 中提取引文数据的功能。还提供了方便的函数来比较多个学者并预测未来的 H 指数值。
1
2
3
4
5
6
# from CRANinstall.packages("scholar")# from GitHubif(!requireNamespace('remotes'))install.packages("remotes")remotes::install_github('YuLab-SMU/scholar')
# 比如pubdf$author[33]# "RP Feynman, RB Leighton, M Sands, CA Heras, R Gómez, E Oelker, ..."for (iin1:nrow(pubdf)){if (grepl("...",pubdf$author[i],fixed=TRUE)){pubdf$author[i]<-get_complete_authors(id,pubdf$pubid[i])}}# 处理好之后:# "RP Feynman, RB Leighton, M Sands, CA Heras, R Gómez, E Oelker, H Espinosa"# 获取作者排名(根据姓查询的,比如这里就是用Feynman,有重名的话保留靠前的排名):author_pos=scholar::author_position(pubdf$author,l$name)pubdf=cbind(pubdf,author_pos)
#比较Feynman和Hawking的文章引用compare_scholars(c('B7vSqZsAAAAJ','qj74uXkAAAAJ'))->compare_resultggplot(compare_result,aes(x=year,y=cites,color=name))+ggh4x::geom_pointpath()+labs(title="Feynman and Hawking's Citation History",x="Year",y="Citations")+theme_classic()
1
2
3
4
5
6
7
#用职业生涯比较累计量compare_scholar_careers(c('B7vSqZsAAAAJ','qj74uXkAAAAJ'))->compare_career_resultggplot(compare_career_result,aes(x=career_year,y=cites,color=name))+ggh4x::geom_pointpath()+labs(title="Feynman and Hawking's Citation History",x="Career year",y="Citations")+theme_classic()
library(rcrossref)# 通过作者ORCID查询文章,但不是很准确,会少很多cr_works(filter=list(orcid="0000-0002-9449-7606"))->orcid_res# 通过期刊+标题查询文章(比如我们之前谷歌学术的结果表格只有期刊+标题,一般没有DOI)res<-cr_works(query="Interaction with the absorber as the mechanism of radiation",flq=c(`query.container-title`='Reviews of Modern Physics'))# 这个可能会搜到很多结果,一般第一条是比较准确的,可以手动check一下:nrow(res$data)## [1] 20
一般使用自己检索或整理得到的bib文件,比如直接从web of science检索,export为BibTex;或者自己想去看的某个作者的文章列表。
1
2
3
4
5
6
7
8
9
10
11
12
13
library(bibliometrix)file<-c("https://www.bibliometrix.org/datasets/management1.txt","https://www.bibliometrix.org/datasets/management2.txt")M<-convert2df(file=file,dbsource="wos",format="plaintext")## ## Converting your wos collection into a bibliographic dataframe## ## Done!## ## ## Generating affiliation field tag AU_UN from C1: Done!
# Create a country collaboration networkM<-metaTagExtraction(M,Field="AU_CO",sep=";")NetMatrix<-biblioNetwork(M,analysis="collaboration",network="countries",sep=";")# Plot the networknet=networkPlot(NetMatrix,n=dim(NetMatrix)[1],Title="Country Collaboration",type="circle",size=TRUE,remove.multiple=FALSE,labelsize=0.8)
共同引用分析:
1
2
3
4
5
6
7
# Create a co-citation networkNetMatrix<-biblioNetwork(M,analysis="co-citation",network="references",n=30,sep=";")# Plot the networknet=networkPlot(NetMatrix,Title="Co-Citation Network",type="fruchterman",size=T,remove.multiple=FALSE,labelsize=0.7,edgesize=5)
关键词网络:
1
2
3
4
5
6
7
8
# Create keyword co-occurrences networkNetMatrix<-biblioNetwork(M,analysis="co-occurrences",network="keywords",sep=";")# Plot the networknet=networkPlot(NetMatrix,normalize="association",weighted=T,n=30,Title="Keyword Co-occurrences",type="fruchterman",size=T,edgesize=5,labelsize=0.7)