Làm thế nào để không chạy một ví dụ bằng cách sử dụng roxygen2?


93

Tôi đang viết một chức năng mã hóa địa lý dựa vào việc có Khóa bản đồ Bing. Rõ ràng là tôi không muốn xuất bản của tôi, và các ví dụ không thành công mà không có một.

Làm cách nào để đưa vào một ví dụ để người dùng chạy theo cách thủ công, nhưng không thực thi nó trong thời gian đó R CMD check?

Câu trả lời:


147

Sử dụng \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
này được ghi chép lại trong ?exampleViết R Extensions
GSee

2
@Jeroen, tôi tin rằng điều đó roxygen2đã tạo nên @examplethẻ, vì vậy tôi nghĩ đó là một roxygen2vấn đề. Tôi không nghĩ \example{}là hợp lệ - xem cran.r-project.org/doc/manuals/…
GSee

2
Đánh giá từ tiêu đề chủ đề, câu hỏi là về cú pháp roxygen2 chứ không phải về cú pháp .Rd?
Jeroen

Cảm ơn vì câu trả lời. Nó không hoạt động với tôi trước tiên vì tôi đang sử dụng @examplethay vì @examples. Cả hai thẻ đều xuất hiện trong chế độ tự động hoàn thành RStudio. Tôi hạnh phúc.
Paul Rougieux

5
Tôi nghĩ câu trả lời chính xác cho những gì đang được yêu cầu là donttest chứ không phải dontrun. Xem? Ví dụ và stackoverflow.com/questions/12038160/… . Xem thêm cran.r-project.org/web/packages/roxygen2/vignettes/rd.html .
Julian Karls

33

Bạn có thể sử dụng \donttest{}ví dụ của mình. Đoạn mã sẽ được cung cấp trong tài liệu của bạn, nhưng sẽ không được kiểm tra bằng Kiểm tra R CMD.

Để biết thêm thông tin -> ?example

#' @example
\donttest{
    2^2
    }

2 ^ 2 này sẽ không chạy khi bạn chạy devtools::check()

Hãy tự mình kiểm tra trước khi đánh giá. :)


13
Có vẻ như đây nên là câu trả lời được chấp nhận thay vì dontrun. Từ? Example 'donttest bao gồm mã thường được chạy, nhưng không phải trong khi kiểm tra gói.' trong khi 'dontrun bao gồm mã không được chạy.' Tôi cũng đã nhận được một nhận xét của những người bảo trì cran để chuyển từ dontrun sang donttest.
Julian Karls

3
Hoàn toàn đồng ý với @JulianKarls. Nhận được phản hồi tương tự từ những người bảo trì CRAN.
David

9

Đối với những người đang sử dụng @example path/to/example.Rthay vì @examplesthẻ, bạn có thể sử dụng \dontrunmôi trường trực tiếp trong example.Rtệp. Ví dụ

# 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
này không làm việc cho tôi (chạy trên Win 10, 64 bit, R phiên bản 3.5.0)
JBJ

2

Ari, tôi cũng sử dụng roxygen2 (phiên bản 4.1.0). Phần sau là phần đánh dấu roxygen2 trong định nghĩa hàm (gctemplate) của tôi cho đến đầu phần thực.

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

Tôi biết phương pháp dontrun của GSee.
Trong kỹ thuật của tôi, ví dụ số và văn bản giải thích ví dụ số đều là chú thích. Tôi sử dụng thụt lề để tạo sự khác biệt giữa hai điều này; Chú ý có 1 dấu sắc và 2 dấu sắc tương ứng sau "# '". Tôi luôn sử dụng kỹ thuật "# '## / #' #" ở trên trong các gói của mình. Người dùng được để lại thao tác sao chép-dán bất cứ khi nào họ muốn kiểm tra chức năng. Kỹ thuật này - theo tôi - song song hơn với sự bắn phá bình luận cổ điển của triết lý mã hóa phần mềm.


14
Nếu bạn sử dụng dontrun{}, thì người dùng có thể gọi example(myFunction, run.dontrun=TRUE), trong khi nếu bạn chỉ nhận xét các ví dụ, bạn không có cách nào để chạy các ví dụ ngoài việc sao chép / dán.
GSee,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.