Provides an interface to the CrossRef API, searching for citations
given a string query. Results are written to a bib file, read back
into R using WriteBib, and returned as a
BibEntry object.
Arguments
- query
string; search term
- filter
named list of possible filters; see
DetailsandReferences; ignored ifuse.old.api = TRUE- limit
numeric; maximum number of entries to return
- offset
numeric; CrossRef will not return the first
offsetresults (default 0); ignored ifuse.old.api = TRUE- sort
string; how specifying how the results from CrossRef should be sorted. Possible values when
use.old.api = FALSEare"score"(default; same as"relevance"),"updated","deposited","indexed", or"published"; see the references- year
numeric; if specified, only results from this year will be returned.
- min.relevance
numeric; only results with a CrossRef-assigned relevance score at least this high will be returned.
- temp.file
string; file name to use for storing Bibtex information returned by CrossRef.
- delete.file
boolean; should the bib file be deleted on exit?
- verbose
boolean; if
TRUE, additional messages are output regarding the results of the query.- use.old.api
boolean; should the older CrossRef API be used for the search? NO LONGER SUPPORTED, all queries need to use the new API.
Details
When use.old.api = TRUE, the query HTTP request only returns DOIs,
which are then used to make HTTP requests for the corresponding BibTeX entries from
CrossRef; when use.old.api = FALSE, the query HTTP request is parsed to create
the BibEntry object (i.e. there are less HTTP requests when using the new API).
CrossRef assigns a score between 0 and 100 based on how relevant a
reference seems to be to your query. The old API
documentation warns that while false negatives are unlikely, the
search can be prone to false positives. Hence, setting
min.revelance to a high value may be necessary if
use.old.api = TRUE. In some instances with the old API, no
score is returned, if this happens, the entries are added with a
message indicating that no score was available.
Possible values for the names in filter are "has-funder",
"funder", "prefix", "member", "from-index-date",
"until-index-date",
"from-deposit-date", "until-deposit-date", "from-update-date",
"until-update-date", "from-created-date", "until-created-date",
"from-pub-date", "until-pub-date", "has-license", "license.url",
"license.version", "license.delay", "has-full-text",
"full-text.version", "full-text.type", "public-references",
"has-references", "has-archive", "archive", "has-orcid",
"orcid", "issn", "type", "directory", "doi",
"updates", "is-update", "has-update-policy", "container-title",
"publisher-name", "category-name", "type-name", "award.number",
"award.funder", "assertion-group", "assertion", "affiliation",
"has-affiliation", "alternative-id", and "article-number".
See the first reference for a description of their meanings.
Note
The entries returned by Crossref are frequently missing
fields required by BibTeX, if you want the entries to be
returned anyway, set BibOptions()$check.entries to
FALSE or "warn"
Fields "score" (the relevancy score) and "license" will be
returned when use.old.api = FALSE.
References
Newer API: https://github.com/CrossRef/rest-api-doc/blob/master/rest_api.md, Older API: https://search.crossref.org/help/api
See also
ReadZotero, BibEntry,
package rcrossref for larger queries and deep paging
Other pubmed:
GetPubMedByID(),
GetPubMedRelated(),
LookupPubMedID(),
ReadPubMed()
Examples
if (interactive() && !httr::http_error("https://search.crossref.org/")){
BibOptions(check.entries = FALSE)
## 3 results from the American Statistical Association involving "regression"
ReadCrossRef("regression", filter = list(prefix="10.1198"), limit = 3)
## Some JRSS-B papers published in 2010 or later, note the quotes for filter
## names with hypens
ReadCrossRef(filter = list(issn = "1467-9868", "from-pub-date" = 2010),
limit = 2, min.relevance = 0)
## Articles published by Institute of Mathematical Statistics
ReadCrossRef(filter = list(prefix = "10.1214"), limit = 5, min.relevance = 0)
## old API
ReadCrossRef(query = 'rj carroll measurement error', limit = 2, sort = "relevance",
min.relevance = 80, use.old.api = TRUE)
ReadCrossRef(query = 'carroll journal of the american statistical association',
year = 2012, limit = 2, use.old.api = TRUE)
}
