possível usar os dados do pacote R em testthat tests ou run_examples (

Estou trabalhando no desenvolvimento de um pacote R, usando devtools, testthat e roxygen2. Eu tenho alguns conjuntos de dados na pasta de dados (foo.txt e bar.csv).

inha estrutura de arquivos é assim:

/ mypackage
    / data
        * foo.txt, bar.csv
    / inst
        / tests
            * run-all.R, test_1.R
    / man
    / R

Tenho certeza de que 'foo' e 'bar' estão documentados corretamente:

    #' Foo data
    #'
    #' Sample foo data
    #'
    #' @name foo
    #' @docType data
    NULL
    #' Bar data
    #'
    #' Sample bar data
    #'
    #' @name bar
    #' @docType data
    NULL

Gostaria de usar os dados em 'foo' e 'bar' nos meus exemplos de documentação e testes de unidad

Por exemplo, eu gostaria de usar esses conjuntos de dados nos meus testes testando os seguinte

    data(foo)
    data(bar)
    expect_that(foo$col[1], equals(bar$col[1]))

E eu gostaria que os exemplos na documentação fossem assim:

    #' @examples
    #' data(foo)
    #' functionThatUsesFoo(foo)

Se eu tentar chamar dados (foo) durante o desenvolvimento do pacote, recebo o erro "conjunto de dados 'foo' não encontrado". No entanto, se eu criar o pacote, instalá-lo e carregá-lo, posso fazer com que os testes e os exemplos funcione

As minhas soluções alternativas atuais não devem executar o exemplo:

    #' @examples
    #' \dontrun{data(foo)}
    #' \dontrun{functionThatUsesFoo(foo)}

Nos testes, pré-carregue os dados usando um caminho específico para o meu computador local:

    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]))

Isso não parece ideal - especialmente porque estou colaborando com outras pessoas - exigindo que todos os colaboradores tenham os mesmos caminhos completos para 'foo' e 'bar'. Além disso, os exemplos na documentação parecem que não podem ser executados, mesmo que, uma vez instalado o pacote, eles possa

Alguma sugestão? Muito obrigado.

questionAnswers(4)

yourAnswerToTheQuestion