Come non eseguire un esempio usando roxygen2?


93

In questo momento sto scrivendo una funzione di geocodifica che si basa sull'avere una chiave di Bing Maps. Ovviamente preferirei non pubblicare il mio e gli esempi falliscono senza uno.

Come faccio a includere un esempio che gli utenti possano eseguire manualmente, ma non farlo eseguire durante R CMD check?

Risposte:


147

Uso \dontrun{}

#'@examples
#'\dontrun{
#'geocode("3817 Spruce St, Philadelphia, PA 19104")
#'geocode("Philadelphia, PA")
#'dat <- data.frame(value=runif(3),address=c("3817 Spruce St, Philadelphia, PA 19104","Philadelphia, PA","Neverneverland"))
#'geocode(dat)
#'}

2
questo è documentato in ?examplee in scrittura di estensioni R
GSee

2
@ Jeroen, credo che sia stato questo roxygen2il @exampletag, quindi penso che sia un roxygen2problema. Non penso \example{}sia valido - vedi cran.r-project.org/doc/manuals/…
GSee

2
A giudicare dal titolo dell'argomento, la domanda riguarda la sintassi roxygen2 e non la sintassi .Rd?
Jeroen

Grazie per la risposta. Non ha funzionato per me prima perché stavo usando @exampleinvece di @examples. Entrambi i tag vengono visualizzati nel completamento automatico di RStudio. Ora sono felice.
Paul Rougieux

5
Penso che la risposta corretta per ciò che viene richiesto sia non testare e non dontrun. Vedi? Esempio e stackoverflow.com/questions/12038160/… . Vedi anche cran.r-project.org/web/packages/roxygen2/vignettes/rd.html .
Julian Karls

33

Puoi usare \donttest{} tuo esempio. Lo snippet verrà fornito nella documentazione, ma non verrà testato con R CMD Check.

Per maggiori informazioni -> ?example

#' @example
\donttest{
    2^2
    }

Questo 2 ^ 2 non verrà eseguito quando corri devtools::check()

Controlla tu stesso prima di giudicare. :)


13
Sembra che questa dovrebbe essere la risposta accettata invece di dontrun. Dall'esempio "donttest include codice che normalmente dovrebbe essere eseguito, ma non durante il controllo del pacchetto." mentre "dontrun racchiude codice che non dovrebbe essere eseguito." Ho anche ricevuto un commento dai manutentori di Cran per passare da dontrun a donttest.
Julian Karls

3
Totalmente d'accordo con @JulianKarls. Ho ricevuto lo stesso feedback dai manutentori di CRAN.
David

9

Per chi utilizza al @example path/to/example.Rposto del @examplestag è possibile utilizzare l' \dontrunambiente direttamente nel example.Rfile. Per esempio

# example.R
\dontrun{
# this is a long running example
for(i in seq(1, 1e5)) { lm(mpg ~ wt, data = mtcars) }
}

# some other shorter example
2 + 2

1
questo non funziona per me (in esecuzione su Win 10, 64 bit, R versione 3.5.0)
JBJ

2

Ari, uso anche roxygen2 (versione 4.1.0). Quanto segue è la fine del mio mark-up roxygen2 nella mia definizione di funzione (gctemplate) fino all'inizio della parte reale.

#' @examples
#' ## List all G-causalities in a VAR system of 5 variables that will be searched in the pattern of 1 
#' ## causer (like-independent) variable and 2 like-dependents conditional on 5-(1+2)=2 of the remaining 
#' ## variable(s) in the system. Variables are assigned to numbers 1 to nvars. 
#' ## "1 2 5 3 4" in the resulting line of gctemplate is to indicate the 
#' ## (conditonal, partial, etc.) G-causality from variable 1 to variables 2 and 5 
#' ## conditonal on variables 3 and 4.
#' # gctemplate(5,1,2)
#' ## The number of all G-causalities to be searched in the above pattern.
#' #dim(gctemplate(5,1,2))[[1]]
#' @importFrom combinat combn
#' @export
gctemplate <- function(nvars, ncausers, ndependents){
...

Conosco il metodo dontrun di GSee.
Nella mia tecnica, l'esempio numerico e il testo che spiega l'esempio numerico sono entrambi commenti. Uso l'indentazione per fare la differenza tra questi due; Notare che ci sono rispettivamente 1 diesis e 2 diesis dopo "#". Uso sempre la tecnica precedente "# '## / #' #" nei miei pacchetti. L'utente può eseguire l'operazione di copia-incolla ogni volta che desidera testare la funzione. Questa tecnica è - secondo me - più parallela al classico bombardamento di commenti della filosofia di codifica del software.


14
Se si utilizza dontrun{}, l'utente può chiamare example(myFunction, run.dontrun=TRUE), mentre se si commentano semplicemente gli esempi, non è possibile eseguire gli esempi se non per copiare / incollare.
GSee
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.