Pregunta

Estoy trabajando en desarrollar un paquete R, usando DevTools, TestTat that y Roxygen2. Tengo un par de conjuntos de datos en la carpeta de datos (foo.txt y bar.csv).

Mi estructura de archivo se ve así:

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

Estoy bastante seguro de que 'foo' y 'bar' están documentados correctamente:

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

Me gustaría usar los datos en 'foo' y 'bar' en mis ejemplos de documentación y pruebas unitarias.

Por ejemplo, me gustaría usar estos conjuntos de datos en mis pruebas de prueba llamando:

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

Y me gustaría que los ejemplos en la documentación se vean así:

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

Si intento llamar a los datos (FOO) mientras desarrolla el paquete, obtengo el error "Conjunto de datos 'foo' no encontrado". Sin embargo, si construyo el paquete, lo instalo y lo cargo, entonces puedo hacer que las pruebas y ejemplos funcionen.

Mis soluciones actuales son para no ejecutar el ejemplo:

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

Y en las pruebas, precarga los datos utilizando una ruta específica para mi computadora 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]))

Esto no parece ideal, especialmente porque estoy colaborando con otros, requiriendo que todos los colaboradores tengan los mismos caminos completos para 'foo' y 'bar'. Además, los ejemplos en la documentación parecen no se pueden ejecutar, aunque una vez que el paquete está instalado, pueden.

¿Alguna sugerencia? Muchas gracias.

No hay solución correcta

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top