Я работаю над разработкой пакета R, используя devtools, testthat и roxygen2. У меня есть несколько наборов данных в папке с данными (foo.txt и bar.csv).Возможно ли использовать данные пакета R в тестах testthat или run_examples()?
Моя файловая структура выглядит следующим образом:
/ mypackage
/data
* foo.txt, bar.csv
/inst
/tests
* run-all.R, test_1.R
/man
/R
Я уверен, что «Foo» и «бар» задокументированы правильно:
#' 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)
Если я пытаюсь вызывать данные (foo) при разработке пакета, я получаю ошибку «набор данных» foo «не найден». Однако, если я создам пакет, устанавливаю его и загружаю, то я могу сделать тесты и примеры работать.
Мои текущие обходные должны не запустить пример:
#' @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». Кроме того, примеры в документации выглядят так, что они не могут быть запущены, хотя после установки пакета они могут.
Любые предложения? Большое спасибо.
Не используйте данные(). Просто полагайтесь на ленивую загрузку. – hadley
Извините, что последний комментарий, я все еще использую это форматирование. Спасибо @hadley. Это помогло с тестами testthat. Я все еще не понимаю, как сделать пример в документации (используя roxygen2), который позволяет мне воспользоваться набором данных. – JPMac
Если вы преобразуете данные в файлы '.Rdata', тогда' load_all' загрузит его для вас. – hadley