Get a citation count via CrossRef OpenURL

cr_citation_count(
  doi,
  url = "http://www.crossref.org/openurl/",
  key = "[email protected]",
  async = FALSE,
  ...
)

Arguments

doi

(character) One or more digital object identifiers. If async=FALSE we do synchronous HTTP requests in an lapply call, but if async=TRUE, we do asynchronous HTTP requests.

url

(character) the url for the function (should be left to default)

key

your Crossref OpenURL email address, either enter, or loads from .Rprofile. We use a default, so you don't need to pass this.

async

(logical) use async HTTP requests. Default: FALSE

...

Curl options passed on to crul::HttpClient()

Value

a data.frame, with columns doi and count. The count column has numeric values that are the citation count for that DOI, or NA if not found or no count available

Details

See https://www.crossref.org/labs/openurl/ for more info on this Crossref API service.

This number is also known as cited-by

Note that this number may be out of sync/may not match that that the publisher is showing (if they show it) for the same DOI/article.

We've contacted Crossref about this, and they have confirmed this. Unfortunately, we can not do anything about this.

I would imagine it's best to use this data instead of from the publishers, and this data you can get programatically :)

failure behavior

When a DOI does not exist, we may not get a proper HTTP status code to throw a proper stop status, so we grep on the text itself, and throw a stop if only one DOI passed and not using async, or warning if more than one DOI passed or if using async.

See also

Author

Carl Boettiger [email protected], Scott Chamberlain

Examples

if (FALSE) { cr_citation_count(doi="10.1371/journal.pone.0042793") cr_citation_count(doi="10.1016/j.fbr.2012.01.001") ## many dois <- c("10.1016/j.fbr.2012.01.001", "10.1371/journal.pone.0042793") cr_citation_count(doi = dois) # DOI not found cr_citation_count(doi="10.1016/j.fbr.2012") # asyc dois <- c("10.1016/j.fbr.2012.01.001", "10.1371/journal.pone.0042793", "10.1016/j.fbr.2012", "10.1109/tsp.2006.874779", "10.1007/bf02231542", "10.1007/s00277-016-2782-z", "10.1002/9781118339893.wbeccp020", "10.1177/011542659200700105", "10.1002/chin.197444438", "10.1002/9781118619599.ch4", "10.1007/s00466-012-0724-8", "10.1017/s0376892900029477", "10.1167/16.12.824") res <- cr_citation_count(doi = dois, async = TRUE) ## verbose curl res <- cr_citation_count(doi = dois, async = TRUE, verbose = TRUE) res ## time comparison system.time(cr_citation_count(doi = dois, async = TRUE)) system.time(cr_citation_count(doi = dois, async = FALSE)) # from a set of random DOIs cr_citation_count(cr_r(50), async = TRUE) }