Estoy escribiendo una función que usa datos externos de la siguiente manera:

Primero, comprueba si los datos están en la carpeta data /, si no lo está, crea la carpeta data / y luego descarga el archivo desde github;

Si los datos ya están en la carpeta data/, los lee y realiza los cálculos.

La pregunta es, cuando corro:

devtools::check()

Vuelve:

Error: 'data' is not an exported object from 'namespace:my_package'

¿Debo poner algo manualmente en NAMESPACE?

Un ejemplo:

my_function <- function(x){
if(file.exists("data/data.csv")){
    my_function_calculation(x = x)
  } else {
    print("Downloading source data...")
    require(RCurl)
    url_base <-
 getURL("https://raw.githubusercontent.com/my_repository/data.csv")
    dir.create(paste0(getwd(),"/data"))
    write.table(url_base,"data/data.csv", sep = ",", quote = FALSE)
    my_function_calculation(x = x)
  }
}

my_function_calculation <- function(x = x){
    data <- NULL
    data <- suppressMessages(fread("data/data.csv"))
    #Here, I use data...
    return(data)
}
13
Igor 19 oct. 2017 a las 22:25

3 respuestas

La mejor respuesta

No podría ser lo mismo en todos los casos, pero he resuelto el problema eliminando el archivo data.R en la carpeta R/.

data.R es un archivo que describe todos los datos presentados en el paquete. Lo tenía desde la versión anterior de mi código, que tenía los datos integrados, no remotos (para descargar). Eliminar el archivo resolvió mi problema.

Ejemplo de datos. R:

#' Name_of_the_data
#'
#' Description_of_the_Data
#'
#' @format A data frame with 10000 rows and 2 variables:
#' \describe{
#'   \item{Col1}{description of Col1}
#'   \item{Col2}{description of Col2}
#' }
"data_name"
7
Igor 24 oct. 2017 a las 12:46

Cuando estaba perplejo por el error

Error: 'data' is not an exported object from 'namespace:my_package'

El comentario de MrFlick arriba me salvó. Simplemente había cambiado el nombre de un archivo .rda en mi carpeta de datos. No pude obtener devtools :: document () para recrear el archivo NAMESPACE. La solución fue volver a guardar los datos en el archivo .rda. (Por supuesto, debería haber recordado que cuando uno carga desde un archivo .rda, el nombre de los objetos R no tiene nada que ver con el nombre del archivo .rda, por lo que cambiar el nombre del archivo .rda no hace mucho).

0
John Goldin 7 ene. 2020 a las 20:36

No es necesario eliminar data.R en la carpeta / R , solo necesita decorar la documentación alrededor de la palabra clave NULL de la siguiente manera:

#' Name_of_the_data
#'
#' Description_of_the_Data
#'
#' @format A data frame with 10000 rows and 2 variables:
#' \describe{
#'   \item{Col1}{description of Col1}
#'   \item{Col2}{description of Col2}
#' }
NULL
1
Mohammed Ali 27 abr. 2019 a las 05:39