From 5d9f8780274d6d60ffe45bcff55d9d2a853667c4 Mon Sep 17 00:00:00 2001 From: Scott Chamberlain Date: Thu, 21 Jul 2016 10:11:31 -0700 Subject: [PATCH] fix to full_Text_urls to give back NA on annotations and improve examples to show how to avoid getting annotation DOIs --- R/fulltext.R | 50 +++++++++++++++++++++++++++---------------- man/full_text_urls.Rd | 11 ++++++++++ man/plos_fulltext.Rd | 3 ++- 3 files changed, 45 insertions(+), 19 deletions(-) diff --git a/R/fulltext.R b/R/fulltext.R index 9dbe54f..864ae7e 100644 --- a/R/fulltext.R +++ b/R/fulltext.R @@ -3,33 +3,46 @@ #' @export #' @param doi One or more doi's #' @return One or more urls, same length as input vector of dois +#' @details We give \strong{NA} for DOIs that are for annotations. Those can easily +#' be removed like \code{Filter(Negate(is.na), res)} #' @examples \dontrun{ #' full_text_urls(doi='10.1371/journal.pone.0086169') #' full_text_urls(doi='10.1371/journal.pbio.1001845') #' full_text_urls(doi=c('10.1371/journal.pone.0086169','10.1371/journal.pbio.1001845')) +#' +#' # contains some annotation DOIs #' dois <- searchplos(q = "*:*", fq='doc_type:full', limit=20)$data$id #' full_text_urls(dois) +#' +#' # contains no annotation DOIs +#' dois <- searchplos(q = "*:*", fq=list('doc_type:full', 'article_type:"Research Article"'), +#' limit=20)$data$id +#' full_text_urls(dois) #' } -full_text_urls <- function(doi){ +full_text_urls <- function(doi) { plos_check_dois(doi) - makeurl <- function(x){ - doijournal <- strsplit(x, "\\.")[[1]][[3]] - journal <- switch(doijournal, - pone = 'plosone', - pbio = 'plosbiology', - pmed = 'plosmedicine', - pgen = 'plosgenetics', - pcbi = 'ploscompbiol', - ppat = 'plospathogens', - pntd = 'plosntds', - pctr = 'plosclinicaltrials') - if ("plosclinicaltrials" == journal) { - ub <- 'http://journals.plos.org/plosclinicaltrials/article/asset?id=%s.XML' - sprintf(ub, x) + makeurl <- function(x) { + if (grepl("annotation", x)) { + NA_character_ } else { - ub <- 'http://www.%s.org/article/fetchObject.action?uri=info:doi/%s&representation=XML' - sprintf(ub, journal, x) + doijournal <- strsplit(x, "\\.")[[1]][[3]] + journal <- switch(doijournal, + pone = 'plosone', + pbio = 'plosbiology', + pmed = 'plosmedicine', + pgen = 'plosgenetics', + pcbi = 'ploscompbiol', + ppat = 'plospathogens', + pntd = 'plosntds', + pctr = 'plosclinicaltrials') + if ("plosclinicaltrials" == journal) { + ub <- 'http://journals.plos.org/plosclinicaltrials/article/asset?id=%s.XML' + sprintf(ub, x) + } else { + ub <- 'http://www.%s.org/article/fetchObject.action?uri=info:doi/%s&representation=XML' + sprintf(ub, journal, x) + } } } vapply(doi, makeurl, "", USE.NAMES = FALSE) @@ -45,7 +58,8 @@ full_text_urls <- function(doi){ #' @examples \dontrun{ #' plos_fulltext(doi='10.1371/journal.pone.0086169') #' plos_fulltext(c('10.1371/journal.pone.0086169','10.1371/journal.pbio.1001845')) -#' dois <- searchplos(q = "*:*", fq='doc_type:full', limit=3)$data$id +#' dois <- searchplos(q = "*:*", fq=list('doc_type:full', 'article_type:"Research Article"'), +#' limit=3)$data$id #' out <- plos_fulltext(dois) #' out[dois[1]] #' out[1:2] diff --git a/man/full_text_urls.Rd b/man/full_text_urls.Rd index 417160b..e005c21 100644 --- a/man/full_text_urls.Rd +++ b/man/full_text_urls.Rd @@ -15,13 +15,24 @@ One or more urls, same length as input vector of dois \description{ Create urls for full text articles in PLOS journals. } +\details{ +We give \strong{NA} for DOIs that are for annotations. Those can easily +be removed like \code{Filter(Negate(is.na), res)} +} \examples{ \dontrun{ full_text_urls(doi='10.1371/journal.pone.0086169') full_text_urls(doi='10.1371/journal.pbio.1001845') full_text_urls(doi=c('10.1371/journal.pone.0086169','10.1371/journal.pbio.1001845')) + +# contains some annotation DOIs dois <- searchplos(q = "*:*", fq='doc_type:full', limit=20)$data$id full_text_urls(dois) + +# contains no annotation DOIs +dois <- searchplos(q = "*:*", fq=list('doc_type:full', 'article_type:"Research Article"'), +limit=20)$data$id +full_text_urls(dois) } } diff --git a/man/plos_fulltext.Rd b/man/plos_fulltext.Rd index 28a0812..5d1edd3 100644 --- a/man/plos_fulltext.Rd +++ b/man/plos_fulltext.Rd @@ -26,7 +26,8 @@ Get full text xml of PLOS papers given a DOI \dontrun{ plos_fulltext(doi='10.1371/journal.pone.0086169') plos_fulltext(c('10.1371/journal.pone.0086169','10.1371/journal.pbio.1001845')) -dois <- searchplos(q = "*:*", fq='doc_type:full', limit=3)$data$id +dois <- searchplos(q = "*:*", fq=list('doc_type:full', 'article_type:"Research Article"'), +limit=3)$data$id out <- plos_fulltext(dois) out[dois[1]] out[1:2]