Tôi đang nghiên cứu phát triển gói R, sử dụng devtools, testthat và roxygen2. Tôi có một vài tập dữ liệu trong thư mục dữ liệu (foo.txt và bar.csv).Có thể sử dụng dữ liệu gói R trong các thử nghiệm testthat hoặc run_examples() không?
cấu trúc tập tin của tôi trông như thế này:
/ mypackage
/data
* foo.txt, bar.csv
/inst
/tests
* run-all.R, test_1.R
/man
/R
Tôi khá chắc chắn 'foo' và 'bar' được ghi nhận một cách chính xác:
#' Foo data
#'
#' Sample foo data
#'
#' @name foo
#' @docType data
NULL
#' Bar data
#'
#' Sample bar data
#'
#' @name bar
#' @docType data
NULL
Tôi muốn sử dụng các dữ liệu trong ' foo 'và' bar 'trong các ví dụ về tài liệu và các bài kiểm tra đơn vị của tôi.
Ví dụ, tôi muốn sử dụng những bộ dữ liệu trong các thử nghiệm testthat của tôi bằng cách gọi:
data(foo)
data(bar)
expect_that(foo$col[1], equals(bar$col[1]))
Và, tôi muốn các ví dụ trong tài liệu hướng dẫn để trông như thế này:
#' @examples
#' data(foo)
#' functionThatUsesFoo(foo)
Nếu tôi cố gắng gọi dữ liệu (foo) trong khi phát triển gói, tôi nhận được lỗi "tập dữ liệu 'foo' không tìm thấy". Tuy nhiên, nếu tôi xây dựng các gói phần mềm, cài đặt nó, và tải nó - sau đó tôi có thể làm cho các bài kiểm tra và ví dụ làm việc.
hiện công việc ở quanh tôi là để không chạy ví dụ:
#' @examples
#' \dontrun{data(foo)}
#' \dontrun{functionThatUsesFoo(foo)}
Và trong các bài kiểm tra, trước khi tải các dữ liệu sử dụng một đường dẫn cụ thể vào máy tính địa phương của tôi:
foo <- read.delim(pathToFoo, sep="\t", fill = TRUE, comment.char="#")
bar <- read.delim(pathToBar, sep=";", fill = TRUE, comment.char="#"
expect_that(foo$col[1], equals(bar$col[1]))
này có vẻ không lý tưởng - đặc biệt là kể từ khi tôi cộng tác với những người khác - yêu cầu tất cả các cộng tác viên phải có cùng một đường dẫn đến 'foo' và 'bar'. Ngoài ra, các ví dụ trong tài liệu trông giống như chúng không thể chạy được, mặc dù khi gói được cài đặt, chúng có thể.
Mọi đề xuất? Cảm ơn nhiều.
Không sử dụng dữ liệu(). Chỉ cần dựa vào tải chậm. – hadley
Xin lỗi về nhận xét cuối cùng đó, tôi vẫn đang sử dụng định dạng này. Cảm ơn @hadley. Điều đó đã giúp với các bài kiểm tra testthat. Tôi vẫn đang thua lỗ về cách tạo một ví dụ trong tài liệu (sử dụng roxygen2) cho phép tôi tận dụng lợi thế của tập dữ liệu. – JPMac
Nếu bạn chuyển đổi dữ liệu thành tệp '.Rdata', thì' load_all' sẽ tải nó cho bạn. – hadley