Можно ли использовать данные пакета R в testthat tests или run_examples ()?

Я работаю над созданием пакета 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' в моих примерах документации и модульных тестах.

Например, я хотел бы использовать эти наборы данных в своих тестах, выполняя вызов:

    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». Кроме того, примеры в документации выглядят так, как будто они не могут быть запущены, хотя после установки пакета они могут.

Какие-либо предложения? Большое спасибо.

Ответы на вопрос(0)

Ваш ответ на вопрос