当前位置: 首页 > 知识库问答 >
问题:

使用R检索期刊论文的引用

雍宇定
2023-03-14

使用R,我想获得引用科学期刊论文的文章列表。

我所掌握的唯一信息是文章的标题,例如“用福林酚试剂测量蛋白质”。

有人能帮我制作一个我可以使用的可复制的例子吗?

这是我到目前为止尝试的。

R包fulltext似乎很有用,因为它允许检索链接到文章的ID列表。例如,我可以获得文章的DOI:

library(fulltext)
res1 <- ft_search(query = "Protein measurement with the folin phenol reagent", from = "crossref")
res1 <- ft_links(res1)
res1$crossref$ids

同样,我可以通过在函数fulltext::ft_search中设置from=“scopus”(并包括一个scopus API键)来获取scopus id。

如果使用DOI,我可以使用R库rcrossref获取文章的引用次数:

rcrossref::cr_citation_count(res1$crossref$ids[1])

类似地,如果我想使用scopus id,而不是DOI,我可以使用R包rscopus

不幸的是,这些信息对我来说还不够,因为我需要的是参考论文的文章列表,而不是编号。

我在网上看到很多人在使用软件包scholar。但如果我理解正确的话,为了让这篇文章起作用,我需要文章的作者有一个谷歌学者ID,并且我必须找到一种方法来检索这个ID。所以这看起来不是一个可行的解决方案。

有人知道如何解决这个问题吗?

共有1个答案

曾翰飞
2023-03-14

一旦拥有了DOI,就可以使用Open引文API获取引用文章的出版物的数据。通过https://opencitations.net/index/coci/api/v1/citations/{DOI}。字段名引用包含引用该出版物的所有出版物的DOI值。然后,您可以使用CrossRef的API获取引用论文的更多元数据,如标题、期刊、出版日期和作者(通过https://api.crossref.org/works/{DOI})。

以下是OpenCitations的API示例,有三次引用(截至2021年1月)。

下面是一个可能的代码(与上面的例子相同):

opcit <- "https://opencitations.net/index/coci/api/v1/citations/10.1177/1369148118786043"

result <- rjson::fromJSON(file = opcit)

citing <- lapply(result, function(x){
  x[['citing']]
})
# a vector with three DOIs, each of which cite the paper
citing <- unlist(citing) 

现在我们有了带有三个DOI的向量引用。然后,您可以使用rcrossref查找引用论文的基本信息,例如:

paper <- rcrossref::cr_works(citing[1])

# find out the title of that paper
paper[["data"]][["title"]]

# output: "Exchange diplomacy: theory, policy and practice in the Fulbright program"

由于在引用中有DOI的向量,您也可以使用这种方法:

citingdata <- rcrossref::cr_cn(citing)

输出的Citingdata应导致三个引用论文的元数据,结构类似于以下两个例子:

[[1]]
[1] "@article{Wong_2020,\n\tdoi = {10.1017/s1752971920000196},\n\turl = {https://doi.org/10.1017%2Fs1752971920000196},\n\tyear = 2020,\n\tmonth = {jun},\n\tpublisher = {Cambridge University Press ({CUP})},\n\tpages = {1--31},\n\tauthor = {Seanon S. Wong},\n\ttitle = {One-upmanship and putdowns: the aggressive use of interaction rituals in face-to-face diplomacy},\n\tjournal = {International Theory}\n}"

[[2]]
[1] "@article{Aalberts_2020,\n\tdoi = {10.1080/21624887.2020.1792734},\n\turl = {https://doi.org/10.1080%2F21624887.2020.1792734},\n\tyear = 2020,\n\tmonth = {aug},\n\tpublisher = {Informa {UK} Limited},\n\tvolume = {8},\n\tnumber = {3},\n\tpages = {240--264},\n\tauthor = {Tanja Aalberts and Xymena Kurowska and Anna Leander and Maria Mälksoo and Charlotte Heath-Kelly and Luisa Lobato and Ted Svensson},\n\ttitle = {Rituals of world politics: on (visual) practices disordering things},\n\tjournal = {Critical Studies on Security}\n}"

 类似资料:
  • 我尝试使用ScopusAPI(pybliometrics)检索引用其他论文的论文标识符。 例子: 论文Franke et al.2020总共有3次引用(我使用获得这个数字) 有没有办法得到这3篇论文的标识符(dois,标题,...)?如果Scopus API不支持此功能,谷歌学者API是否支持此功能?

  • 我想问一下如何在R笔记本中引用,就像在latex中一样,例如,当一个人从google scholar获得出版物和引用规范时:https://scholar.google.cz/scholar?hl=cs 如何在Rmarkdown文件中引用此内容? 我相信,使用与latex中相同的方法会奏效,但事实并非如此。是否有需要安装的软件包,或者引文是否以某种方式集成在默认的R笔记本中?

  • 如何检索给定年份内论文的引用次数? 我看了Scopus引文概述应用编程接口,但是pybliometrics留档说应用编程接口密钥需要爱思唯尔为此目的批准,事实上它返回了错误403。 是否有其他数据源可以检索引用次数? rcrossref包提供了一个函数,该函数似乎可以获取当前引文的数量。 我需要给定年份的引用次数(例如,如果一篇论文在2010年发表,我可能需要2015年的引用次数,而不是2021年

  • objc.io 是关于 Objective-C 最佳实践和先进技术的期刊,每一期专注于某个特定的主题,包含多篇文章涵盖这个主题的各个方面。

  • 分享 GitHub 上有趣、入门级的开源项目。

  • 科学论文的R“stats”引用问题使我想知道,当在学术论文中使用R时,我将如何列举我应该引用的所有R包。我如何获得我加载并需要引用的包列表?