Bagaimana cara menjalankan contoh menggunakan roxygen2?


96

Saya sedang menulis fungsi geocoding sekarang yang mengandalkan memiliki Bing Maps Key. Jelas saya lebih suka tidak menerbitkan milik saya, dan contoh gagal tanpa satu.

Bagaimana cara menyertakan contoh bagi pengguna untuk dijalankan secara manual, tetapi tidak dieksekusi selama R CMD check?

Jawaban:


149

Menggunakan \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
ini didokumentasikan dalam ?exampledan Menulis Ekstensi R
GSee

2
@ Jeroen, saya percaya itu roxygen2membuat @exampletag, jadi saya pikir itu roxygen2masalah. Saya rasa tidak \example{}valid - lihat cran.r-project.org/doc/manuals/…
GSee

2
Dilihat dari judul topiknya, pertanyaannya adalah tentang sintaks roxygen2 dan bukan tentang sintaks .Rd?
Jeroen

Terima kasih atas jawabannya. Itu tidak berhasil untuk saya pertama kali karena saya menggunakan, @examplebukan @examples. Kedua tag muncul dalam pelengkapan otomatis RStudio. Aku senang sekarang.
Paul Rougieux

5
Saya pikir jawaban yang benar untuk apa yang diminta adalah donttest dan bukan dontrun. Lihat? Example dan stackoverflow.com/questions/12038160/… . Lihat juga cran.r-project.org/web/packages/roxygen2/vignettes/rd.html .
Julian Karch

37

Anda dapat menggunakan \donttest{}contoh Anda. Cuplikan akan disediakan dalam dokumentasi Anda, tetapi tidak akan diuji dengan Pemeriksaan R CMD.

Untuk info lebih lanjut -> ?example

#' @example
\donttest{
    2^2
    }

2 ^ 2 ini tidak akan berjalan saat Anda berlari devtools::check()

Periksa sendiri sebelum menilai. :)


16
Tampaknya ini harus menjadi jawaban yang diterima daripada jangan lari. Dari? Contoh 'donttest menyertakan kode yang biasanya harus dijalankan, tetapi tidak selama pemeriksaan paket.' sedangkan 'dontrun menyertakan kode yang tidak boleh dijalankan.' Saya juga mendapat komentar dari pengelola cran untuk beralih dari dontrun ke donttest.
Julian Karch

3
Sangat setuju dengan @JulianKarls. Mendapat tanggapan yang sama dari pengelola CRAN.
David

11

Bagi mereka yang menggunakan @example path/to/example.Rsebagai ganti @examplestag, Anda dapat menggunakan \dontrunlingkungan langsung di example.Rfile. Sebagai contoh

# 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
ini tidak berfungsi untuk saya (berjalan pada Win 10, 64 bit, R versi 3.5.0)
JBJ

2

Ari, saya juga menggunakan roxygen2 (versi 4.1.0). Berikut ini adalah akhir dari mark-up roxygen2 saya dalam definisi fungsi saya (gctemplate) sampai awal bagian yang sebenarnya.

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

Saya tahu metode dontrun GSee.
Dalam teknik saya, contoh numerik dan teks yang menjelaskan contoh numerik keduanya adalah komentar. Saya menggunakan lekukan untuk membuat perbedaan antara keduanya; Perhatikan ada 1 kres dan 2 kres masing-masing setelah "# '". Saya selalu menggunakan teknik "# '## / #' #" di atas dalam paket saya. Pengguna dibiarkan melakukan operasi salin-tempel setiap kali ia ingin menguji fungsi tersebut. Teknik ini - menurut saya - lebih paralel dengan bombardir komentar klasik dari filosofi pengkodean perangkat lunak.


14
Jika Anda menggunakan dontrun{}, maka pengguna dapat memanggil example(myFunction, run.dontrun=TRUE), sedangkan jika Anda hanya mengomentari contoh, Anda tidak memiliki cara untuk menjalankan contoh selain salin / tempel.
GSee
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.