Jak nie uruchamiać przykładu przy użyciu roxygen2?

96

Piszę teraz funkcję geokodowania, która polega na posiadaniu klucza map Bing. Oczywiście wolałbym nie publikować swoich, a przykłady zawodzą bez jednego.

Jak dołączyć przykład dla użytkowników do ręcznego uruchamiania, ale nie ma go wykonywany w trakcie R CMD check?

Ari B. Friedman
źródło

Odpowiedzi:

149

Posługiwać się \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
źródło
2
jest to udokumentowane w ?examplei Pisanie rozszerzeń
języka
2
@Jeroen, myślę, że to roxygen2złożyło się na @exampletag, więc myślę, że to roxygen2problem. Myślę, że to nie \example{}jest poprawne - patrz cran.r-project.org/doc/manuals/ ...
GS Zobacz
2
Sądząc po tytule tematu, pytanie dotyczy składni roxygen2, a nie składni .Rd?
Jeroen
Dziękuję za odpowiedź. Najpierw nie zadziałało, ponieważ używałem @examplezamiast @examples. Oba tagi pojawiają się w autouzupełnianiu RStudio. Teraz jestem szczęśliwy.
Paul Rougieux,
5
Myślę, że prawidłowa odpowiedź na to, o co się prosi, to nie testować i nie uruchamiać. Zobacz? Example i stackoverflow.com/questions/12038160/… . Zobacz także cran.r-project.org/web/packages/roxygen2/vignettes/rd.html .
Julian Karch,
37

Możesz użyć \donttest{}na swoim przykładzie. Fragment zostanie dostarczony w Twojej dokumentacji, ale nie zostanie przetestowany za pomocą R CMD Check.

Więcej informacji -> ?example

#' @example
\donttest{
    2^2
    }

To 2 ^ 2 nie zostanie uruchomione, gdy będziesz biegać devtools::check()

Sprawdź to sam przed oceną. :)

samkart
źródło
16
Wydaje się, że to powinna być akceptowana odpowiedź, a nie dontrun. Z przykładu „donttest zawiera kod, który zwykle powinien być uruchamiany, ale nie podczas sprawdzania pakietu”. podczas gdy „dontrun zawiera kod, którego nie należy uruchamiać”. Otrzymałem również komentarz od opiekunów dźwigów, aby przejść z dontrun na donttest.
Julian Karch,
3
Całkowicie zgadzam się z @JulianKarls. Otrzymałem te same opinie od opiekunów CRAN.
David
11

Dla tych, którzy używają @example path/to/example.Rzamiast @examplestagu, możesz użyć \dontrunśrodowiska bezpośrednio w example.Rpliku. Na przykład

# 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
Piotr
źródło
1
to nie działa dla mnie (działa na Win 10, 64 bit, R w wersji 3.5.0)
JBJ
2

Ari, ja też używam roxygen2 (wersja 4.1.0). Poniżej znajduje się koniec mojego znacznika roxygen2 w mojej definicji funkcji (gctemplate) do początku części rzeczywistej.

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

Znam metodę dontrun GSee.
W mojej technice zarówno przykład liczbowy, jak i tekst wyjaśniający przykład liczbowy są komentarzami. Używam wcięć, aby odróżnić te dwa; Zauważ, że po znaku „#” jest odpowiednio 1 ostry i 2 ostre. Zawsze używam powyższej techniki "# '## / #' #" w moich pakietach. Użytkownik może wykonać operację kopiowania i wklejania za każdym razem, gdy chce przetestować funkcję. Technika ta jest - według mnie - bardziej równoległa do klasycznego bombardowania komentarzami filozofii kodowania oprogramowania.

Erdogan CEVHER
źródło
14
Jeśli używasz dontrun{}, użytkownik może zadzwonić example(myFunction, run.dontrun=TRUE), podczas gdy jeśli po prostu skomentujesz przykłady, nie masz innego sposobu na uruchomienie przykładów niż skopiowanie / wklejenie.
GSee,