From 145d7ef8a0e964b0897a8791f70a9ec2b91ad893 Mon Sep 17 00:00:00 2001 From: Scott Chamberlain Date: Tue, 28 Feb 2017 11:51:29 -0800 Subject: [PATCH] removed richtations, makred defunct bumpd dev version removed a donttest to just commenting out the eg --- DESCRIPTION | 2 +- NEWS.md | 2 +- R/citations.R | 54 +------ R/highplos.r | 6 +- R/plosabstract.R | 1 - R/rplos-package.R | 1 + README.Rmd | 2 +- README.md | 211 ++++++++++++------------- inst/assets/img/unnamed-chunk-21-1.png | Bin 19021 -> 17874 bytes man/citations-defunct.Rd | 12 ++ man/citations.Rd | 45 ------ man/highplos.Rd | 4 +- man/plosabstract.Rd | 1 - man/rplos-defunct.Rd | 1 + tests/testthat/test-citations.R | 36 ----- 15 files changed, 124 insertions(+), 254 deletions(-) create mode 100644 man/citations-defunct.Rd delete mode 100644 man/citations.Rd delete mode 100644 tests/testthat/test-citations.R diff --git a/DESCRIPTION b/DESCRIPTION index 9870019..e5494f1 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -7,7 +7,7 @@ Description: A programmatic interface to the 'SOLR' based articles, making plots, doing 'faceted' searches, 'highlight' searches, and viewing results of 'highlighted' searches in a browser. -Version: 0.6.7.9200 +Version: 0.6.7.9910 License: MIT + file LICENSE Authors@R: c( person("Scott", "Chamberlain", role = c("aut", "cre"), email = "myrmecocystus@gmail.com"), diff --git a/NEWS.md b/NEWS.md index 2000cdd..0faae77 100644 --- a/NEWS.md +++ b/NEWS.md @@ -77,7 +77,7 @@ rplos 0.4.7 ### NEW FEATURES -* New function `citations()` for querying the [PLOS Rich Citations API](http://api.richcitations.org/) (#88) +* New function `citations()` for querying the PLOS Rich Citations API (http://api.richcitations.org/) (#88) ### BUG FIXES diff --git a/R/citations.R b/R/citations.R index 0679021..7c437ba 100644 --- a/R/citations.R +++ b/R/citations.R @@ -1,51 +1,7 @@ -#' Search PLOS Rich Citations API -#' +#' This function is defunct. #' @export -#' @param uri (character) A URI, of the form \code{http://dx.doi.org/} -#' @param doi (character) A PLOS journals DOI -#' @param parse (logical) Passed to \code{\link[jsonlite]{fromJSON}}, toggles -#' whether we return json parsed to data.frame's where possible, or not. -#' Default: FALSE -#' @param ... Curl options passed to \code{\link[httr]{GET}} -#' @return A list -#' @references \url{http://api.richcitations.org/} -#' @details To get an API key, email \email{ploslabs@@plos.org} and request a key -#' @examples \dontrun{ -#' # get citations for an article (via its DOI) -#' # uri <- "http://dx.doi.org/10.1371%2Fjournal.pone.0000000" -#' # citations(uri) -#' # citations(uri, parse = TRUE) -#' -#' # pass in a DOI, url encoded or not -#' # citations(doi = "10.1371%2Fjournal.pone.0000000") -#' # citations(doi = "10.1371/journal.pone.0000000") -#' # ids <- searchplos(q='ecology', fl='id', limit = 20)$data$id -#' # citations(doi = ids[1]) -#' } - -citations <- function(uri = NULL, doi = NULL, parse = FALSE, ...) { - calls <- names(sapply(match.call(), deparse))[-1] - if ("random" %in% calls) stop("The parameter 'random' has been removed", call. = FALSE) - - # one has to be non-NULL - stopifnot(length(ploscompact(list(uri, doi))) == 1) - uri <- uriparse(uri, doi) - args <- ploscompact(list(uri = uri)) - if (length(args) == 0) args <- NULL - res <- GET(richbase(), query = args, ...) - stop_for_status(res) - jsonlite::fromJSON(utf8cont(res), parse) -} - -richbase <- function() "http://api.richcitations.org/papers" - -uriparse <- function(x, y) { - # both can't be null - stopifnot(xor(!is.null(x), !is.null(y))) - # check for url encoding - if (!is.null(y)) { - paste0("http://dx.doi.org/", sub("/", "%2F", y)) - } else { - x - } +#' @rdname citations-defunct +#' @keywords internal +citations <- function(...) { + .Defunct(msg = "the data provider behind citations() is gone") } diff --git a/R/highplos.r b/R/highplos.r index 42ee9d4..d80dbe3 100644 --- a/R/highplos.r +++ b/R/highplos.r @@ -12,10 +12,8 @@ #' highplos(q='alcohol', hl.fl='abstract', hl.snippets=5, hl.mergeContiguous='true', rows=5) #' highplos(q='alcohol', hl.fl='abstract', hl.useFastVectorHighlighter='true', rows=5) #' highplos(q='everything:"experiment"', fq='doc_type:full', rows=100, hl.fl = 'title') -#' } -#' -#' @examples \donttest{ -#' highplos(q='alcohol', hl.fl = 'abstract', rows=1200) +#' +#' # highplos(q='alcohol', hl.fl = 'abstract', rows=1200) #' } highplos <- function(q, fl=NULL, fq=NULL, hl.fl = NULL, hl.snippets = NULL, hl.fragsize = NULL, diff --git a/R/plosabstract.R b/R/plosabstract.R index d6f5971..bac9db2 100644 --- a/R/plosabstract.R +++ b/R/plosabstract.R @@ -8,7 +8,6 @@ #' plosabstract(q = 'drosophila', fl=c('id','author'), limit = 5) #' plosabstract(q = 'drosophila', fl='author', limit = 5) #' plosabstract(q = 'drosophila', fl=c('id','author','title'), limit = 5) -#' plosabstract(q = 'drosophila', fl=c('id','author','title'), limit = 5, config=verbose()) #' } plosabstract <- function(q = NULL, fl = 'id', fq = NULL, sort = NULL, start = 0, diff --git a/R/rplos-package.R b/R/rplos-package.R index 5b02266..6d204e3 100644 --- a/R/rplos-package.R +++ b/R/rplos-package.R @@ -56,6 +56,7 @@ NULL #' \itemize{ #' \item \code{\link{crossref}}: service no longer provided - #' see the package \code{rcrossref} +#' \item \code{\link{citations}}: service no longer available #' } #' #' @name rplos-defunct diff --git a/README.Rmd b/README.Rmd index f4ef6fe..dfeece2 100644 --- a/README.Rmd +++ b/README.Rmd @@ -49,7 +49,7 @@ rplos tutorial at rOpenSci website [here](http://ropensci.org/tutorials/rplos_tu PLoS API documentation [here](http://api.plos.org/) -Crossref API documentation [here](https://github.com/CrossRef/rest-api-doc/blob/master/rest_api.md), [here](http://crosstech.crossref.org/2014/04/%E2%99%AB-researchers-just-wanna-have-funds-%E2%99%AB.html), and [here](http://help.crossref.org/#home). Note that we are working on a new package [rcrossref](https://github.com/ropensci/rcrossref) ([on CRAN](https://cran.r-project.org/package=rcrossref)) with a much fuller implementation of R functions for all Crossref endpoints. +Crossref API documentation [here](https://github.com/CrossRef/rest-api-doc/blob/master/rest_api.md), and [here](http://help.crossref.org/#home). Note that we are working on a new package [rcrossref](https://github.com/ropensci/rcrossref) ([on CRAN](https://cran.r-project.org/package=rcrossref)) with a much fuller implementation of R functions for all Crossref endpoints. ## Quick start diff --git a/README.md b/README.md index 176b1ee..07ae176 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ rplos tutorial at rOpenSci website [here](http://ropensci.org/tutorials/rplos_tu PLoS API documentation [here](http://api.plos.org/) -Crossref API documentation [here](https://github.com/CrossRef/rest-api-doc/blob/master/rest_api.md), [here](http://crosstech.crossref.org/2014/04/%E2%99%AB-researchers-just-wanna-have-funds-%E2%99%AB.html), and [here](http://help.crossref.org/#home). Note that we are working on a new package [rcrossref](https://github.com/ropensci/rcrossref) ([on CRAN](https://cran.r-project.org/package=rcrossref)) with a much fuller implementation of R functions for all Crossref endpoints. +Crossref API documentation [here](https://github.com/CrossRef/rest-api-doc/blob/master/rest_api.md), and [here](http://help.crossref.org/#home). Note that we are working on a new package [rcrossref](https://github.com/ropensci/rcrossref) ([on CRAN](https://cran.r-project.org/package=rcrossref)) with a much fuller implementation of R functions for all Crossref endpoints. ## Quick start @@ -56,40 +56,34 @@ Search for the term ecology, and return id (DOI) and publication date, limiting searchplos('ecology', 'id,publication_date', limit = 5) #> $meta #> numFound start maxScore -#> 1 33699 0 NA +#> 1 36908 0 NA #> #> $data -#> id -#> 1 10.1371/journal.pone.0059813 -#> 2 10.1371/journal.pone.0001248 -#> 3 10.1371/annotation/69333ae7-757a-4651-831c-f28c5eb02120 -#> 4 10.1371/journal.pone.0080763 -#> 5 10.1371/journal.pone.0155019 -#> publication_date -#> 1 2013-04-24T00:00:00Z -#> 2 2007-11-28T00:00:00Z -#> 3 2013-10-29T00:00:00Z -#> 4 2013-12-10T00:00:00Z -#> 5 2016-05-11T00:00:00Z +#> id publication_date +#> 1 10.1371/journal.pone.0059813 2013-04-24T00:00:00Z +#> 2 10.1371/journal.pone.0001248 2007-11-28T00:00:00Z +#> 3 10.1371/journal.pone.0080763 2013-12-10T00:00:00Z +#> 4 10.1371/journal.pone.0155019 2016-05-11T00:00:00Z +#> 5 10.1371/journal.pone.0102437 2014-07-22T00:00:00Z ``` Get DOIs for full article in PLoS One ```r -searchplos(q="*:*", fl='id', fq=list('cross_published_journal_key:PLoSONE', +searchplos(q="*:*", fl='id', fq=list('journal_key:PLoSONE', 'doc_type:full'), limit=5) #> $meta #> numFound start maxScore -#> 1 161020 0 NA +#> 1 167954 0 NA #> #> $data #> id -#> 1 10.1371/journal.pone.0024229 -#> 2 10.1371/journal.pone.0024016 -#> 3 10.1371/journal.pone.0094828 -#> 4 10.1371/journal.pone.0095065 -#> 5 10.1371/journal.pone.0130784 +#> 1 10.1371/journal.pone.0130089 +#> 2 10.1371/journal.pone.0165670 +#> 3 10.1371/journal.pone.0162873 +#> 4 10.1371/journal.pone.0163015 +#> 5 10.1371/journal.pone.0167202 ``` Query to get some PLOS article-level metrics, notice difference between two outputs @@ -101,27 +95,20 @@ out_sorted <- searchplos(q="*:*", fl=c('id','counter_total_all','alm_twitterCoun fq='doc_type:full', sort='counter_total_all desc') head(out$data) #> id alm_twitterCount counter_total_all -#> 1 10.1371/journal.pone.0024229 0 1762 -#> 2 10.1371/journal.pgen.1004259 0 686 -#> 3 10.1371/journal.pone.0024016 0 1774 -#> 4 10.1371/journal.pgen.1004316 0 1597 -#> 5 10.1371/journal.pone.0094828 0 1024 -#> 6 10.1371/journal.pgen.1004352 1 1647 +#> 1 10.1371/journal.pcbi.1000942 0 2388 +#> 2 10.1371/journal.pone.0130089 11 1942 +#> 3 10.1371/journal.pone.0165670 0 202 +#> 4 10.1371/journal.pgen.1002909 2 2858 +#> 5 10.1371/journal.pcbi.1004317 8 2818 +#> 6 10.1371/journal.pbio.1002259 0 2652 head(out_sorted$data) -#> id alm_twitterCount -#> 1 10.1371/journal.pmed.0020124 2480 -#> 2 10.1371/annotation/80bd7285-9d2d-403a-8e6f-9c375bf977ca 0 -#> 3 10.1371/journal.pcbi.0030102 53 -#> 4 10.1371/journal.pcbi.1003149 145 -#> 5 10.1371/journal.pmed.0050045 153 -#> 6 10.1371/journal.pone.0069841 860 -#> counter_total_all -#> 1 1707520 -#> 2 546738 -#> 3 448864 -#> 4 409507 -#> 5 391646 -#> 6 389823 +#> id alm_twitterCount counter_total_all +#> 1 10.1371/journal.pmed.0020124 2859 1984822 +#> 2 10.1371/journal.pone.0141854 3105 733371 +#> 3 10.1371/journal.pcbi.1003149 153 567900 +#> 4 10.1371/journal.pcbi.0030102 57 539980 +#> 5 10.1371/journal.pone.0069841 871 447379 +#> 6 10.1371/journal.pone.0088278 891 427864 ``` A list of articles about social networks that are popular on a social network @@ -133,20 +120,20 @@ searchplos(q="*:*",fl=c('id','alm_twitterCount'), sort='counter_total_month desc') #> $meta #> numFound start maxScore -#> 1 43 0 NA +#> 1 51 0 NA #> #> $data #> id alm_twitterCount -#> 1 10.1371/journal.pone.0155885 118 -#> 2 10.1371/journal.pmed.1000316 923 -#> 3 10.1371/journal.pone.0151588 153 -#> 4 10.1371/journal.pone.0069841 860 -#> 5 10.1371/journal.pone.0149885 123 -#> 6 10.1371/journal.pone.0073791 1667 -#> 7 10.1371/journal.pcbi.1003789 1528 -#> 8 10.1371/journal.pbio.1001535 1798 -#> 9 10.1371/journal.pone.0148405 469 -#> 10 10.1371/journal.pone.0156409 121 +#> 1 10.1371/journal.pone.0069841 871 +#> 2 10.1371/journal.pone.0171774 163 +#> 3 10.1371/journal.pmed.1000316 963 +#> 4 10.1371/journal.pone.0073791 1721 +#> 5 10.1371/journal.pone.0148405 497 +#> 6 10.1371/journal.pone.0151588 321 +#> 7 10.1371/journal.pbio.1001535 1933 +#> 8 10.1371/journal.pone.0168895 148 +#> 9 10.1371/journal.pone.0090315 440 +#> 10 10.1371/journal.pone.0150989 237 ``` Show all articles that have these two words less then about 15 words apart @@ -156,13 +143,13 @@ Show all articles that have these two words less then about 15 words apart searchplos(q='everything:"sports alcohol"~15', fl='title', fq='doc_type:full', limit=3) #> $meta #> numFound start maxScore -#> 1 100 0 NA +#> 1 117 0 NA #> #> $data -#> title -#> 1 Alcohol Advertising in Sport and Non-Sport TV in Australia, during Children’s Viewing Times -#> 2 Correction: Alcohol Advertising in Sport and Non-Sport TV in Australia, during Children’s Viewing Times -#> 3 Symptoms of Insomnia and Sleep Duration and Their Association with Incident Strokes: Findings from the Population-Based MONICA/KORA Augsburg Cohort Study +#> title +#> 1 Alcohol Advertising in Sport and Non-Sport TV in Australia, during Children’s Viewing Times +#> 2 The Effect of Significant International Sports Events on Qualified Detoxification Treatment Outcome - Do Drop-Out Rates Change during UEFA European Championship? +#> 3 Symptoms of Insomnia and Sleep Duration and Their Association with Incident Strokes: Findings from the Population-Based MONICA/KORA Augsburg Cohort Study ``` Narrow results to 7 words apart, changing the ~15 to ~7 @@ -172,13 +159,13 @@ Narrow results to 7 words apart, changing the ~15 to ~7 searchplos(q='everything:"sports alcohol"~7', fl='title', fq='doc_type:full', limit=3) #> $meta #> numFound start maxScore -#> 1 51 0 NA +#> 1 62 0 NA #> #> $data -#> title -#> 1 Alcohol Advertising in Sport and Non-Sport TV in Australia, during Children’s Viewing Times -#> 2 Correction: Alcohol Advertising in Sport and Non-Sport TV in Australia, during Children’s Viewing Times -#> 3 Symptoms of Insomnia and Sleep Duration and Their Association with Incident Strokes: Findings from the Population-Based MONICA/KORA Augsburg Cohort Study +#> title +#> 1 Alcohol Advertising in Sport and Non-Sport TV in Australia, during Children’s Viewing Times +#> 2 The Effect of Significant International Sports Events on Qualified Detoxification Treatment Outcome - Do Drop-Out Rates Change during UEFA European Championship? +#> 3 Symptoms of Insomnia and Sleep Duration and Their Association with Incident Strokes: Findings from the Population-Based MONICA/KORA Augsburg Cohort Study ``` Remove DOIs for annotations (i.e., corrections) and Viewpoints articles @@ -189,15 +176,15 @@ searchplos(q='*:*', fl=c('id','article_type'), fq=list('-article_type:correction','-article_type:viewpoints'), limit=5) #> $meta #> numFound start maxScore -#> 1 1565546 0 NA +#> 1 1705775 0 NA #> #> $data #> id article_type -#> 1 10.1371/journal.pone.0024229/title Research Article -#> 2 10.1371/journal.pone.0024229/abstract Research Article -#> 3 10.1371/journal.pone.0024229/references Research Article -#> 4 10.1371/journal.pone.0024229/body Research Article -#> 5 10.1371/journal.pone.0024229/introduction Research Article +#> 1 10.1371/journal.pcbi.1000942/title Research Article +#> 2 10.1371/journal.pcbi.1000942/abstract Research Article +#> 3 10.1371/journal.pcbi.1000942/references Research Article +#> 4 10.1371/journal.pcbi.1000942/body Research Article +#> 5 10.1371/journal.pcbi.1000942/introduction Research Article ``` ### Faceted search @@ -213,19 +200,19 @@ facetplos(q='alcohol', facet.field=c('journal','subject'), facet.limit=5) #> $facet_fields #> $facet_fields$journal #> X1 X2 -#> 1 plos one 1319779 -#> 2 plos genetics 51827 -#> 3 plos pathogens 45119 -#> 4 plos computational biology 38599 -#> 5 plos neglected tropical diseases 37114 +#> 1 plos one 1407216 +#> 2 plos genetics 54150 +#> 3 plos pathogens 47708 +#> 4 plos computational biology 41170 +#> 5 plos neglected tropical diseases 41072 #> #> $facet_fields$subject #> X1 X2 -#> 1 biology and life sciences 1505447 -#> 2 medicine and health sciences 1167857 -#> 3 research and analysis methods 999924 -#> 4 biochemistry 736199 -#> 5 cell biology 629720 +#> 1 biology and life sciences 1630484 +#> 2 medicine and health sciences 1273984 +#> 3 research and analysis methods 1067048 +#> 4 biochemistry 792385 +#> 5 cell biology 673604 #> #> #> $facet_dates @@ -252,17 +239,17 @@ facetplos(q='*:*', url=url, facet.range='counter_total_all', #> #> $facet_ranges #> $facet_ranges$counter_total_all -#> X1 X2 -#> 1 5 395 -#> 2 15 826 -#> 3 25 1106 -#> 4 35 1686 -#> 5 45 2134 -#> 6 55 1979 -#> 7 65 1845 -#> 8 75 1784 -#> 9 85 1441 -#> 10 95 1279 +#> X1 X2 +#> 1 5 0 +#> 2 15 0 +#> 3 25 9 +#> 4 35 52 +#> 5 45 242 +#> 6 55 256 +#> 7 65 219 +#> 8 75 228 +#> 9 85 168 +#> 10 95 253 ``` ### Highlight searches @@ -303,7 +290,7 @@ Simple function to get full text urls for a DOI ```r full_text_urls(doi='10.1371/journal.pone.0086169') -#> [1] "http://www.plosone.org/article/fetchObject.action?uri=info:doi/10.1371/journal.pone.0086169&representation=XML" +#> [1] "http://journals.plos.org/plosone/article/file?id=10.1371/journal.pone.0086169&type=manuscript" ``` ### Full text xml given a DOI @@ -344,20 +331,20 @@ For example: plossubject(q='marine ecology', fl = c('id','journal'), limit = 10) #> $meta #> numFound start maxScore -#> 1 3050 0 NA +#> 1 3493 0 NA #> #> $data -#> id journal -#> 1 10.1371/journal.pone.0021810 PLoS ONE -#> 2 10.1371/journal.pone.0021810/title PLoS ONE -#> 3 10.1371/journal.pone.0021810/abstract PLoS ONE -#> 4 10.1371/journal.pone.0021810/references PLoS ONE -#> 5 10.1371/journal.pone.0021810/body PLoS ONE -#> 6 10.1371/journal.pone.0021810/introduction PLoS ONE -#> 7 10.1371/journal.pone.0021810/materials_and_methods PLoS ONE -#> 8 10.1371/journal.pone.0092590 PLoS ONE -#> 9 10.1371/journal.pone.0092590/introduction PLoS ONE -#> 10 10.1371/journal.pone.0092590/title PLoS ONE +#> id journal +#> 1 10.1371/journal.pone.0149852 PLOS ONE +#> 2 10.1371/journal.pone.0149852/title PLOS ONE +#> 3 10.1371/journal.pone.0149852/abstract PLOS ONE +#> 4 10.1371/journal.pone.0149852/references PLOS ONE +#> 5 10.1371/journal.pone.0149852/body PLOS ONE +#> 6 10.1371/journal.pone.0149852/introduction PLOS ONE +#> 7 10.1371/journal.pone.0149852/results_and_discussion PLOS ONE +#> 8 10.1371/journal.pone.0149852/materials_and_methods PLOS ONE +#> 9 10.1371/journal.pone.0149852/supporting_information PLOS ONE +#> 10 10.1371/journal.pone.0080365/results_and_discussion PLoS ONE ``` However, you can always just do this in `searchplos()` like `searchplos(q = "subject:science")`. See also the `fq` parameter. The above convenience functions are simply wrappers around `searchplos`, so take all the same parameters. @@ -370,11 +357,11 @@ Search with term _marine ecology_, by field _subject_, and limit to 5 results ```r plosviews(search='marine ecology', byfield='subject', limit=5) #> id counter_total_all -#> 3 10.1371/journal.pone.0080365 2003 -#> 1 10.1371/journal.pone.0021810 2327 -#> 5 10.1371/journal.pone.0149852 4162 -#> 4 10.1371/journal.pone.0031775 4805 -#> 2 10.1371/journal.pone.0092590 7183 +#> 3 10.1371/journal.pone.0080365 2203 +#> 4 10.1371/journal.pone.0021810 2581 +#> 1 10.1371/journal.pone.0149852 5941 +#> 2 10.1371/journal.pone.0092590 8007 +#> 5 10.1371/journal.pbio.1000131 42699 ``` ### Visualize @@ -386,11 +373,11 @@ Visualize word use across articles plosword(list('monkey','Helianthus','sunflower','protein','whale'), vis = 'TRUE') #> $table #> No_Articles Term -#> 1 10480 monkey -#> 2 428 Helianthus -#> 3 1171 sunflower -#> 4 117345 protein -#> 5 1370 whale +#> 1 11163 monkey +#> 2 466 Helianthus +#> 3 1285 sunflower +#> 4 125467 protein +#> 5 1465 whale #> #> $plot ``` diff --git a/inst/assets/img/unnamed-chunk-21-1.png b/inst/assets/img/unnamed-chunk-21-1.png index 08c182330cc7dd4af7fcf35600759aa321571dee..13643c164d719250d7ac13220c4d9ddec143d842 100644 GIT binary patch literal 17874 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

*~CKg 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 - -\item{doi}{(character) A PLOS journals DOI} - -\item{parse}{(logical) Passed to \code{\link[jsonlite]{fromJSON}}, toggles -whether we return json parsed to data.frame's where possible, or not. -Default: FALSE} - -\item{...}{Curl options passed to \code{\link[httr]{GET}}} -} -\value{ -A list -} -\description{ -Search PLOS Rich Citations API -} -\details{ -To get an API key, email \email{ploslabs@plos.org} and request a key -} -\examples{ -\dontrun{ -# get citations for an article (via its DOI) -# uri <- "http://dx.doi.org/10.1371\%2Fjournal.pone.0000000" -# citations(uri) -# citations(uri, parse = TRUE) - -# pass in a DOI, url encoded or not -# citations(doi = "10.1371\%2Fjournal.pone.0000000") -# citations(doi = "10.1371/journal.pone.0000000") -# ids <- searchplos(q='ecology', fl='id', limit = 20)$data$id -# citations(doi = ids[1]) -} -} -\references{ -\url{http://api.richcitations.org/} -} diff --git a/man/highplos.Rd b/man/highplos.Rd index 8df6531..c1d61ae 100644 --- a/man/highplos.Rd +++ b/man/highplos.Rd @@ -200,9 +200,7 @@ highplos(q='alcohol', hl.fl='abstract', hl.snippets=5, rows=5) highplos(q='alcohol', hl.fl='abstract', hl.snippets=5, hl.mergeContiguous='true', rows=5) highplos(q='alcohol', hl.fl='abstract', hl.useFastVectorHighlighter='true', rows=5) highplos(q='everything:"experiment"', fq='doc_type:full', rows=100, hl.fl = 'title') -} -\donttest{ -highplos(q='alcohol', hl.fl = 'abstract', rows=1200) +# highplos(q='alcohol', hl.fl = 'abstract', rows=1200) } } diff --git a/man/plosabstract.Rd b/man/plosabstract.Rd index 37d3cf2..a3e1d52 100644 --- a/man/plosabstract.Rd +++ b/man/plosabstract.Rd @@ -95,6 +95,5 @@ plosabstract(q = 'drosophila', fl='abstract', limit=10) plosabstract(q = 'drosophila', fl=c('id','author'), limit = 5) plosabstract(q = 'drosophila', fl='author', limit = 5) plosabstract(q = 'drosophila', fl=c('id','author','title'), limit = 5) -plosabstract(q = 'drosophila', fl=c('id','author','title'), limit = 5, config=verbose()) } } diff --git a/man/rplos-defunct.Rd b/man/rplos-defunct.Rd index f5d6202..e5c1fe9 100644 --- a/man/rplos-defunct.Rd +++ b/man/rplos-defunct.Rd @@ -7,5 +7,6 @@ \itemize{ \item \code{\link{crossref}}: service no longer provided - see the package \code{rcrossref} + \item \code{\link{citations}}: service no longer available } } diff --git a/tests/testthat/test-citations.R b/tests/testthat/test-citations.R deleted file mode 100644 index ecd5067..0000000 --- a/tests/testthat/test-citations.R +++ /dev/null @@ -1,36 +0,0 @@ -# tests for searchplos fxn in rplos -context("citations") - -# test_that("citations", { -# skip_on_cran() -# -# # get citations for an article (via its DOI) -# uri <- "http://dx.doi.org/10.1371%2Fjournal.pone.0000000" -# a <- citations(uri) -# b <- citations(uri, parse = TRUE) -# -# # pass in a DOI, url encoded or not -# c <- citations(doi = "10.1371%2Fjournal.pone.0000000") -# d <- citations(doi = "10.1371/journal.pone.0000000") -# ids <- searchplos(q = 'ecology', fl = 'id', limit = 20)$data$id -# e <- citations(doi = ids[1]) -# -# # citations returns the correct classes -# expect_is(a, "list") -# expect_is(a$uri, "character") -# expect_is(a$bibliographic, "list") -# expect_is(a$references, "list") -# expect_is(a$citation_groups, "list") -# expect_is(b$references, "data.frame") -# expect_is(c, "list") -# expect_is(d, "list") -# expect_is(e, "list") -# -# # citations works with uri escaped DOIs and those not escaped -# expect_equal(c, d) -# -# # citations fails well -# expect_error(citations(), "is not TRUE") -# expect_error(citations(uri = 5), "Not Found") -# expect_error(citations(doi = 5), "Not Found") -# })