Я работаю над разработкой пакета R, используя devtools, testthat и roxygen2. У меня есть пара наборов данных в папке данных (foo.txt и bar.csv).
Моя файловая структура выглядит так:
/ mypackage
/ data
* foo.txt, bar.csv
/ inst
/ tests
* run-all.R, test_1.R
/ man
/ R
Я почти уверен, что 'foo' и 'bar' задокументированы правильно:
#' Foo data
#'
#' Sample foo data
#'
#' @name foo
#' @docType data
NULL
#' Bar data
#'
#' Sample bar data
#'
#' @name bar
#' @docType data
NULL
Я хотел бы использовать данные из 'foo' и 'bar' в моих примерах документации и модульных тестах.
Например, я хотел бы использовать эти наборы данных в своих тестах testthat, вызвав:
data(foo)
data(bar)
expect_that(foo$col[1], equals(bar$col[1]))
И я бы хотел, чтобы примеры в документации выглядели так:
#' @examples
#' data(foo)
#' functionThatUsesFoo(foo)
Если я пытаюсь вызвать data (foo) во время разработки пакета, я получаю сообщение об ошибке «data set 'foo' not found». Однако, если я соберу пакет, установлю его и загрузю - тогда я смогу заставить тесты и примеры работать.
Мои текущие обходные пути - не запускать пример:
#' @examples
#' \dontrun{data(foo)}
#' \dontrun{functionThatUsesFoo(foo)}
И в тестах предварительно загружайте данные, используя путь, специфичный для моего локального компьютера:
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]))
Это не кажется идеальным - особенно с учетом того, что я сотрудничаю с другими - требуя, чтобы у всех соавторов были одинаковые полные пути к 'foo' и 'bar'. Кроме того, примеры в документации выглядят так, как будто их невозможно запустить, хотя после установки пакета они могут.
Какие-либо предложения? Большое спасибо.
.Rdata
файлы,load_all
загрузит их за вас. - person hadley   schedule 24.01.2012