¿Cómo no ejecutar un ejemplo usando roxygen2?

93

Estoy escribiendo una función de codificación geográfica en este momento que se basa en tener una clave de Bing Maps. Obviamente prefiero no publicar el mío, y los ejemplos fallan sin uno.

¿Cómo incluyo un ejemplo para que los usuarios lo ejecuten manualmente, pero no lo ejecuten durante R CMD check?

Ari B. Friedman
fuente

Respuestas:

147

Utilizar \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)
#'}
GSee
fuente
2
esto está documentado en ?exampley Writing R Extensions
GSee
2
@Jeroen, creo que eso roxygen2hizo la @exampleetiqueta, así que creo que es un roxygen2problema. No creo que \example{}sea ​​válido - ver cran.r-project.org/doc/manuals/…
GSee
2
A juzgar por el título del tema, la pregunta es sobre la sintaxis de roxygen2 y no sobre la sintaxis .Rd.
Jeroen
Gracias por la respuesta. No funcionó para mí primero porque estaba usando en @examplelugar de @examples. Ambas etiquetas aparecen en RStudio autocompletar. Estoy feliz ahora.
Paul Rougieux
5
Creo que la respuesta correcta para lo que se pide es más tonto y no dontrun. Consulte? Ejemplo y stackoverflow.com/questions/12038160/… . Consulte también cran.r-project.org/web/packages/roxygen2/vignettes/rd.html .
Julian Karls
33

Puedes usar \donttest{}tu ejemplo. El fragmento se proporcionará en su documentación, pero no se probará con R CMD Check.

Para más información -> ?example

#' @example
\donttest{
    2^2
    }

Este 2 ^ 2 no se ejecutará cuando corras devtools::check()

Compruébelo usted mismo antes de juzgar. :)

samkart
fuente
13
Parece que esta debería ser la respuesta aceptada en lugar de dontrun. From? Example 'donttest incluye código que normalmente debería ejecutarse, pero no durante la comprobación de paquetes'. mientras que 'dontrun incluye código que no debe ejecutarse'. También recibí un comentario de los mantenedores de cran para cambiar de dontrun a donttest.
Julian Karls
3
Totalmente de acuerdo con @JulianKarls. Recibí los mismos comentarios de los encargados de mantenimiento de CRAN.
David
9

Para aquellos que están usando en @example path/to/example.Rlugar de la @examplesetiqueta, pueden usar el \dontrunentorno directamente en el example.Rarchivo. Por ejemplo

# 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
Pedro
fuente
1
esto no funciona para mí (se ejecuta en Win 10, 64 bits, versión R 3.5.0)
JBJ
2

Ari, también uso roxygen2 (versión 4.1.0). El siguiente es el final de mi marcado roxygen2 en mi definición de función (gctemplate) hasta el comienzo de la parte real.

#' @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){
...

Conozco el método dontrun de GSee.
En mi técnica, el ejemplo numérico y el texto que explica el ejemplo numérico son comentarios. Utilizo sangría para diferenciar estos dos; Observe que hay 1 sostenido y 2 sostenidos respectivamente después de "#". Siempre uso la técnica anterior "# '## / #' #" en mis paquetes. El usuario tiene que realizar la operación de copiar y pegar siempre que quiera probar la función. Esta técnica es, según yo, más paralela al clásico bombardeo de comentarios de la filosofía de codificación de software.

Erdogan CEVHER
fuente
14
Si usa dontrun{}, el usuario puede llamar example(myFunction, run.dontrun=TRUE), mientras que si simplemente comenta los ejemplos, no tiene forma de ejecutar los ejemplos más que copiar / pegar.
GSee