Learn R Programming

⚠️There's a newer version (1.2.0) of this package.Take me there.

rcrossref

R interface to various CrossRef APIs

CrossRef documentation

Installation

Stable version from CRAN

install.packages("rcrossref")

Or development version from GitHub

install.packages("devtools")
devtools::install_github("ropensci/rcrossref")

Load rcrossref

library('rcrossref')

Citation search

Use CrossRef's DOI Content Negotiation service, where you can citations back in various formats, including apa

cr_cn(dois = "10.1126/science.169.3946.635", format = "text", style = "apa")
#> [1] "Frank, H. S. (1970). The Structure of Ordinary Water: New data and interpretations are yielding new insights into this fascinating substance. Science, 169(3946), 635–641. doi:10.1126/science.169.3946.635"

bibtex

cat(cr_cn(dois = "10.1126/science.169.3946.635", format = "bibtex"))
#> @article{Frank_1970,
#> 	doi = {10.1126/science.169.3946.635},
#> 	url = {http://dx.doi.org/10.1126/science.169.3946.635},
#> 	year = 1970,
#> 	month = {aug},
#> 	publisher = {American Association for the Advancement of Science ({AAAS})},
#> 	volume = {169},
#> 	number = {3946},
#> 	pages = {635--641},
#> 	author = {H. S. Frank},
#> 	title = {The Structure of Ordinary Water: New data and interpretations are yielding new insights into this fascinating substance},
#> 	journal = {Science}
#> }

bibentry

cr_cn(dois = "10.6084/m9.figshare.97218", format = "bibentry")
#> Boettiger C (2012). "Regime shifts in ecology and evolution (PhD
#> Dissertation)." doi: 10.6084/m9.figshare.97218 (URL:
#> http://doi.org/10.6084/m9.figshare.97218), <URL:
#> https://doi.org/10.6084/m9.figshare.97218>.

Citation count

Citation count, using OpenURL

cr_citation_count(doi = "10.1371/journal.pone.0042793")
#> [1] 10

Search Crossref metadata API

The following functions all use the CrossRef API.

Look up funder information

cr_funders(query = "NSF")
#> $meta
#>   total_results search_terms start_index items_per_page
#> 1             8          NSF           0             20
#> 
#> $data
#> # A tibble: 8 × 6
#>             id      location
#>          <chr>         <chr>
#> 1    100003187 United States
#> 2    100008367       Denmark
#> 3 501100004190        Norway
#> 4    100000179 United States
#> 5    100006445 United States
#> 6 501100000930     Australia
#> 7    100000001 United States
#> 8 501100001809         China
#> # ... with 4 more variables: name <chr>, alt.names <chr>, uri <chr>,
#> #   tokens <chr>

Check the DOI minting agency

cr_agency(dois = '10.13039/100000001')
#> $DOI
#> [1] "10.13039/100000001"
#> 
#> $agency
#> $agency$id
#> [1] "crossref"
#> 
#> $agency$label
#> [1] "CrossRef"

Search works (i.e., articles)

cr_works(filter = c(has_orcid = TRUE, from_pub_date = '2004-04-04'), limit = 1)
#> $meta
#>   total_results search_terms start_index items_per_page
#> 1        419228           NA           0              1
#> 
#> $data
#> # A tibble: 1 × 24
#>   alternative.id container.title    created  deposited
#>            <chr>           <chr>      <chr>      <chr>
#> 1                                2015-11-11 2015-11-11
#> # ... with 20 more variables: DOI <chr>, funder <list>, indexed <chr>,
#> #   ISBN <chr>, ISSN <chr>, issued <chr>, link <list>, member <chr>,
#> #   prefix <chr>, publisher <chr>, reference.count <chr>, score <chr>,
#> #   source <chr>, subject <chr>, title <chr>, type <chr>, URL <chr>,
#> #   assertion <list>, author <list>, `clinical-trial-number` <list>
#> 
#> $facets
#> NULL

Search journals

cr_journals(issn = c('1803-2427','2326-4225'))
#> # A tibble: 2 × 16
#>   alternative.id container.title created deposited funder indexed  ISBN
#>            <chr>           <chr>   <chr>     <chr> <list>   <chr> <chr>
#> 1                                                  <NULL>              
#> 2                                                  <NULL>              
#> # ... with 9 more variables: ISSN <chr>, issued <chr>, link <list>,
#> #   publisher <chr>, subject <chr>, title <chr>, assertion <list>,
#> #   author <list>, `clinical-trial-number` <list>

Search license information

cr_licenses(query = 'elsevier')
#> $meta
#>   total_results search_terms start_index items_per_page
#> 1            13     elsevier           0             20
#> 
#> $data
#> # A tibble: 13 × 2
#>                                                                            URL
#>                                                                          <chr>
#> 1                            http://creativecommons.org/licenses/by-nc-nd/3.0/
#> 2                            http://creativecommons.org/licenses/by-nc-nd/4.0/
#> 3                               http://creativecommons.org/licenses/by-nc/4.0/
#> 4                                  http://creativecommons.org/licenses/by/3.0/
#> 5                                  http://creativecommons.org/licenses/by/4.0/
#> 6                                   http://doi.wiley.com/10.1002/tdm_license_1
#> 7                            http://onlinelibrary.wiley.com/termsAndConditions
#> 8         http://www.acm.org/publications/policies/copyright_policy#Background
#> 9                         http://www.elsevier.com/open-access/userlicense/1.0/
#> 10                                http://www.elsevier.com/tdm/userlicense/1.0/
#> 11                                                 http://www.springer.com/tdm
#> 12 © 2007 Elsevier Masson SAS. All rights reserved. The patient figure in Figu
#> 13 © 2012, Elsevier Inc., All Rights Reserved. Figure 8, part (B) (images of H
#> # ... with 1 more variables: work.count <int>

Search based on DOI prefixes

cr_prefixes(prefixes = c('10.1016','10.1371','10.1023','10.4176','10.1093'))
#> $meta
#> NULL
#> 
#> $data
#>                               member                             name
#> 1   http://id.crossref.org/member/78                      Elsevier BV
#> 2  http://id.crossref.org/member/340 Public Library of Science (PLoS)
#> 3  http://id.crossref.org/member/297                  Springer Nature
#> 4 http://id.crossref.org/member/1989             Co-Action Publishing
#> 5  http://id.crossref.org/member/286    Oxford University Press (OUP)
#>                                  prefix
#> 1 http://id.crossref.org/prefix/10.1016
#> 2 http://id.crossref.org/prefix/10.1371
#> 3 http://id.crossref.org/prefix/10.1023
#> 4 http://id.crossref.org/prefix/10.4176
#> 5 http://id.crossref.org/prefix/10.1093
#> 
#> $facets
#> list()

Search CrossRef members

cr_members(query = 'ecology', limit = 5)
#> $meta
#>   total_results search_terms start_index items_per_page
#> 1            18      ecology           0              5
#> 
#> $data
#> # A tibble: 5 × 48
#>      id
#>   <int>
#> 1  7052
#> 2  6933
#> 3  7278
#> 4  7745
#> 5  9167
#> # ... with 47 more variables: primary_name <chr>, location <chr>,
#> #   last_status_check_time <date>, backfile.dois <chr>,
#> #   current.dois <chr>, total.dois <chr>, prefixes <chr>,
#> #   coverge.affiliations.current <chr>, coverge.funders.backfile <chr>,
#> #   coverge.licenses.backfile <chr>, coverge.funders.current <chr>,
#> #   coverge.affiliations.backfile <chr>,
#> #   coverge.resource.links.backfile <chr>, coverge.orcids.backfile <chr>,
#> #   coverge.update.policies.current <chr>, coverge.orcids.current <chr>,
#> #   coverge.references.backfile <chr>,
#> #   coverge.award.numbers.backfile <chr>,
#> #   coverge.update.policies.backfile <chr>,
#> #   coverge.licenses.current <chr>, coverge.award.numbers.current <chr>,
#> #   coverge.abstracts.backfile <chr>,
#> #   coverge.resource.links.current <chr>, coverge.abstracts.current <chr>,
#> #   coverge.references.current <chr>,
#> #   flags.deposits.abstracts.current <chr>,
#> #   flags.deposits.orcids.current <chr>, flags.deposits <chr>,
#> #   flags.deposits.affiliations.backfile <chr>,
#> #   flags.deposits.update.policies.backfile <chr>,
#> #   flags.deposits.award.numbers.current <chr>,
#> #   flags.deposits.resource.links.current <chr>,
#> #   flags.deposits.articles <chr>,
#> #   flags.deposits.affiliations.current <chr>,
#> #   flags.deposits.funders.current <chr>,
#> #   flags.deposits.references.backfile <chr>,
#> #   flags.deposits.abstracts.backfile <chr>,
#> #   flags.deposits.licenses.backfile <chr>,
#> #   flags.deposits.award.numbers.backfile <chr>,
#> #   flags.deposits.references.current <chr>,
#> #   flags.deposits.resource.links.backfile <chr>,
#> #   flags.deposits.orcids.backfile <chr>,
#> #   flags.deposits.funders.backfile <chr>,
#> #   flags.deposits.update.policies.current <chr>,
#> #   flags.deposits.licenses.current <chr>, names <chr>, tokens <chr>
#> 
#> $facets
#> NULL

Get N random DOIs

cr_r() uses the function cr_works() internally.

cr_r()
#>  [1] "10.1039/ct8885300641"                
#>  [2] "10.1063/1.1709474"                   
#>  [3] "10.1111/j.1708-8305.1996.tb00750.x"  
#>  [4] "10.1037//1076-898x.2.3.270"          
#>  [5] "10.4337/9781783471171.00028"         
#>  [6] "10.1007/978-1-349-07777-9_4"         
#>  [7] "10.1111/b.9781405116749.2003.00054.x"
#>  [8] "10.1016/j.crvi.2004.09.010"          
#>  [9] "10.1002/uog.15794"                   
#> [10] "10.14731/kjis.2013.12.11.2.295"

You can pass in the number of DOIs you want back (default is 10)

cr_r(2)
#> [1] "10.1038/scibx.2008.713"          "10.1007/978-3-642-41714-6_91906"

pmid2doi & doi2pmid

DOIs to PMIDs

UPDATE: as of 2014-12-23 the web API behind these functions is down - we'll update the package once the API is up again

Get full text links to works

Publishers can optionally provide links in the metadata they provide to Crossref for full text of the work, but that data is often missing. Find out more about it at http://tdmsupport.crossref.org/.

Get some DOIs for articles that provide full text, and that have CC-BY 3.0 licenses (i.e., more likely to actually be open)

out <-
  cr_works(filter = list(has_full_text = TRUE,
    license_url = "http://creativecommons.org/licenses/by/3.0/"))
(dois <- out$data$DOI)
#>  [1] "10.1063/1.4905711" "10.1063/1.4908245" "10.1063/1.4908158"
#>  [4] "10.1063/1.4908244" "10.1063/1.4913247" "10.1063/1.4914847"
#>  [7] "10.1063/1.4916217" "10.1063/1.4916677" "10.1063/1.4916696"
#> [10] "10.1063/1.4917283" "10.1063/1.4918284" "10.1063/1.4919707"
#> [13] "10.1063/1.4921711" "10.1063/1.4921771" "10.1063/1.4922319"
#> [16] "10.1063/1.4922934" "10.1063/1.4922006" "10.1063/1.4926610"
#> [19] "10.1063/1.4926838" "10.1063/1.4926914"

Then get URLs to full text content

(links <- cr_ft_links(dois[1]))
#> NULL

Then use those URLs to get full text

cr_ft_text(links, "xml")
#> <?xml version="1.0"?>
#> <article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://jats.nlm.nih.gov/publishing/1.1d1/xsd/JATS-journalpublishing1-mathml3.xsd" dtd-version="1.1d1">
#>   <front>
#>     <journal-meta>
#>       <journal-id journal-id-type="publisher-id">SV</journal-id>
#>       <journal-title-group>
#>         <journal-title>Shock and Vibration</journal-title>
#>       </journal-title-group>
#>       <issn pub-type="epub">1875-9203</issn>
#>       <issn pub-type="ppub">1070-9622</issn>
#>       <publisher>
#>         <publisher-name>Hindawi Publishing Corporation</publisher-name>
#>       </publisher>
#>     </journal-meta>
#> .................... cutoff

Meta

  • Please report any issues or bugs.
  • License: MIT
  • Get citation information for rcrossref in R doing citation(package = 'rcrossref')
  • Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

This package is part of a richer suite called fulltext, along with several other packages, that provides the ability to search for and retrieve full text of open access scholarly articles.


Copy Link

Version

Install

install.packages('rcrossref')

Monthly Downloads

1,293

Version

0.6.0

License

MIT + file LICENSE

Issues

Pull Requests

Stars

Forks

Maintainer

Scott Chamberlain

Last Published

November 9th, 2016

Functions in rcrossref (0.6.0)

cr_citation_count

Get a citation count via CrossRef OpenURL
cr_ft_links

Get full text links from a DOI
cr_types

Search CrossRef types
cr_members

Search CrossRef members
cr_licenses

Search CrossRef licenses
cr_search_free

Search the CrossRef Metatdata for DOIs using free form references.
cr_works

Search CrossRef works (articles)
crosscite

Crosscite - citation formatter
cr_prefixes

Search CrossRef prefixes
cr_r

Get a random set of DOI's through CrossRef.
cr_journals

Search CrossRef journals
GET_agency_id

Get doi agency id to identify resource location
cr_search

Search the CrossRef Metatdata API.
rcrossref-package

R Client for Various CrossRef APIs.
pmid2doi

Get a PMID from a DOI, and vice versa.
extract_xpdf

Extract text from a single pdf document.
id_converter

Get a PMID from a DOI, and vice versa.
filters

Get filter details and names.
rcrossref-defunct

Defunct functions in rcrossref
rcrossref-deprecated

Deprecated functions in rcrossref
get_styles

Get list of styles from github.com/citation-style-language/styles
cr_agency

Check the DOI minting agency on one or more dois
cr_cn

Get citations in various formats from CrossRef.
cr_abstract

Get abstract
cr_fundref

fundref
cr_citation

This function is defunct
as.tdmurl

Coerce a url to a tdmurl with a specific type
cr_ft_text

Get full text from a DOI
cr_funders

Search the CrossRef Fundref API