Як не запустити приклад, використовуючи roxygen2?


93

Зараз я пишу функцію геокодування, яка покладається на наявність ключа Bing Maps. Очевидно, що я волів би не публікувати свій, і приклади зазнають невдачі без жодного.

Як включити приклад для запуску користувачами вручну, але не виконувати його протягом R CMD check?

Відповіді:


147

Використовуйте \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
це задокументовано в ?exampleта Написанні розширень R
GSee

2
@Jeroen, я вважаю, що це roxygen2склало @exampleтег, тому я думаю, що це roxygen2проблема. Я не вважаю, що \example{}це дійсно - див. Cran.r-project.org/doc/manuals/…
GSee

2
Судячи з назви теми, питання стосується синтаксису roxygen2, а не синтаксису .Rd?
Jeroen

Дякую за відповідь. Спочатку це не спрацювало у мене, бо я використовував @exampleзамість @examples. Обидва теги з’являються в RStudio автозаповнення. Зараз я щаслива.
Paul Rougieux,

5
Я думаю, що правильна відповідь на те, про що просять, - це не тестування, а не недотримання. Див.? Example та stackoverflow.com/questions/12038160/… . Див. Також cran.r-project.org/web/packages/roxygen2/vignettes/rd.html .
Джуліан Карлс,

33

Ви можете використовувати \donttest{}на своєму прикладі. Фрагмент буде вказаний у вашій документації, але не буде перевірений за допомогою R CMD Check.

Для отримання додаткової інформації -> ?example

#' @example
\donttest{
    2^2
    }

Цей 2 ^ 2 не буде запускатися під час бігу devtools::check()

Перевірте це самостійно, перш ніж судити. :)


13
Здається, це повинна бути прийнята відповідь замість dontrun. З прикладу? Dont 'додає код, який зазвичай слід запускати, але не під час перевірки пакета.' тоді як "dontrun включає код, який не слід запускати". Я також отримав коментар супровідників cran щодо переходу з dontrun на donttest.
Джуліан Карлс

3
Повністю згоден з @JulianKarls. Отримав такий самий відгук від супровідників CRAN.
Девід

9

Для тих, хто використовує @example path/to/example.Rзамість @examplesтегу, ви можете використовувати \dontrunсередовище безпосередньо у example.Rфайлі. Наприклад

# 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
у мене це не працює (працює на Win 10, 64-бітна версія R 3.5.0)
JBJ

2

Арі, я також використовую roxygen2 (версія 4.1.0). Далі наведено кінець моєї націнки roxygen2 у визначенні моєї функції (gctemplate) до початку реальної частини.

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

Я знаю метод виходу GSee.
У моїй техніці числовий приклад і текст, що пояснює числовий приклад, є коментарями. Я використовую відступ, щоб зробити різницю між цими двома; Зверніть увагу, що після "# '" є 1 різка та 2 різка. Я завжди використовую вищезгаданий прийом "# '## / #' #" у своїх пакунках. Користувачеві залишається копіювати-вставляти операцію, коли він / вона хоче перевірити функцію. Цей прийом, на мою думку, є більш паралельним класичному бомбардуванню коментарів філософією програмного кодування.


14
Якщо ви використовуєте dontrun{}, тоді користувач може зателефонувати example(myFunction, run.dontrun=TRUE), тоді як якщо ви просто коментуєте приклади, у вас немає можливості запустити приклади, крім як скопіювати / вставити.
GSee
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.