Search code examples
rdevtools

devtools::document error: thinking that part of function description should be imported as a package


this is the first time that I use devtools, so it is probably some silly mistake. Please don't mind that stuff is in Portuguese. I am writing in this file 3 functions for the package, two of them to be exported datazoom_pnadc, pnadc_painel_basico:

#' @importFrom labelled set_variable_labels var_label
#' @importFrom readxl read_excel
#' @import tidyverse


#' Carregando dados brutos
#'
#' @param diretorio_dados Diretório onde os microdados originais em formato de texto estão armazenados
#'
#' @param diretorio_dicionario Diretório onde o dicionário da pesquisa em formato xls está armaezenado
#'
#' @param ... vetores com datas das pesquisas de interesse no  formato \code{c('trimestre', 'ano')}
#'
#' @return Lista de dataframes, sendo cada entrada um trimestre/ano em \code{...}
#' @encoding UTF-8
#' @export
#'
#' @examples
#' datazoom_pnadc('./Desktop', './Desktop', c(1, 2000), c(2, 2000))
#'
    datazoom_pnadc <- function(diretorio_dados,
                               diretorio_dicionario,
                               ...) {}

     #' Painel básico
     #'
     #' @param build_data Default \code{TRUE}.
     #' Se \code{TRUE}, implementa primeiro \code{\link{datazoom_pnadc}} e depois
     #' monta paineis de indivíduos. Se \code{FALSE}, a função constrói paneis a partir de dados já carregados no R
     #'
     #' @param dados_prontos Bases de dados para diferentes trimestres da PNAD contínua.
     #' Necessário se \code{build_data = FALSE}
     #'
     #' @param local_dados Diretório onde os microdados originais em formato de texto estão armazenados
     #' caso \code{build_data = TRUE}
     #'
     #' @param local_dicionarios Diretório onde o dicionário da pesquisa em formato xls está armaezenado caso
     #' \code{build_data = TRUE}
     #'
     #' @param periodos Lista de vetores com períodos de interesse no formato
     #' \code{periodos = list(c(trimestre1, ano1), c(trimestre2, ano2), ...)}
     #'
     #' @encoding UTF-8
     #'
     #' @return Lista de dataframes, sendo cada entrada um trimestre/ano
     #'
     #' @examples
     #' PNADC_2012 <- datazoom_pnadc(diretorio_dados = './Desktop',
     #' diretorio_dicionario = './pnadcontinua/Desktop',
     #' c(1,2012), c(2,2012))
     #'
     #' teste <- pnadc_painel_basico(build_data = FALSE,
     #'                              dados_prontos = PNADC_2012)
     #'
     #' teste2 <- pnadc_painel_basico(build_data = TRUE,
     #'                               local_dados = './pnadcontinua',
     #'                               local_dicionario = './pnadcontinua/Dicionario_e_input',
     #'                               periodos = list(c(1,2012), c(2,2012)))
     #' @export
    pnadc_painel_basico <- function(build_data = TRUE, ...){}


    loop <- function(data,
                     interview = 2,
                     int_final = 5){...}

After running devtools::document, I get the following problems:

Updating DatazoomR documentation
Loading DatazoomR
Writing NAMESPACE
Writing NAMESPACE
Writing pnadc_painel_basico.Rd
Warning messages:
1: In loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) :
  there is no package called ‘Carregando’
2: In loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) :
  there is no package called ‘brutos’
3: In loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) :
  there is no package called ‘dados’
4: datazoom_pnadc.Rd is missing name/title. Skipping

I don't know why this happens. For some reason some of the words in the description are thought to be added to the previous line in import. And also only the second function is being saved.

Can someone help? It seems to be something related to formatting.


Solution

  • I created a new R package using RStudio's "New Project > New Directory > R package using devtools".

    I then added one R file, containing the following:

    #' @importFrom labelled set_variable_labels var_label
    #' @importFrom readxl read_excel
    #' @import tidyverse
    NULL
    
    #' Carregando dados brutos
    #'
    #' @param diretorio_dados Diretório onde os microdados originais em formato de texto estão armazenados
    #'
    #' @param diretorio_dicionario Diretório onde o dicionário da pesquisa em formato xls está armaezenado
    #'
    #' @param ... vetores com datas das pesquisas de interesse no  formato \code{c('trimestre', 'ano')}
    #'
    #' @return Lista de dataframes, sendo cada entrada um trimestre/ano em \code{...}
    #' @encoding UTF-8
    #' @export
    #'
    #' @examples
    #' datazoom_pnadc('./Desktop', './Desktop', c(1, 2000), c(2, 2000))
    #'
    datazoom_pnadc <- function(diretorio_dados,
                               diretorio_dicionario,
                               ...) {
        return(NULL)
    }
    
    #' Painel básico
    #'
    #' @param build_data Default \code{TRUE}.
    #' Se \code{TRUE}, implementa primeiro \code{\link{datazoom_pnadc}} e depois
    #' monta paineis de indivíduos. Se \code{FALSE}, a função constrói paneis a partir de dados já carregados no R
    #'
    #' @param dados_prontos Bases de dados para diferentes trimestres da PNAD contínua.
    #' Necessário se \code{build_data = FALSE}
    #'
    #' @param local_dados Diretório onde os microdados originais em formato de texto estão armazenados
    #' caso \code{build_data = TRUE}
    #'
    #' @param local_dicionarios Diretório onde o dicionário da pesquisa em formato xls está armaezenado caso
    #' \code{build_data = TRUE}
    #'
    #' @param periodos Lista de vetores com períodos de interesse no formato
    #' \code{periodos = list(c(trimestre1, ano1), c(trimestre2, ano2), ...)}
    #'
    #' @encoding UTF-8
    #'
    #' @return Lista de dataframes, sendo cada entrada um trimestre/ano
    #'
    #' @examples
    #' PNADC_2012 <- datazoom_pnadc(diretorio_dados = './Desktop',
    #' diretorio_dicionario = './pnadcontinua/Desktop',
    #' c(1,2012), c(2,2012))
    #'
    #' teste <- pnadc_painel_basico(build_data = FALSE,
    #'                              dados_prontos = PNADC_2012)
    #'
    #' teste2 <- pnadc_painel_basico(build_data = TRUE,
    #'                               local_dados = './pnadcontinua',
    #'                               local_dicionario = './pnadcontinua/Dicionario_e_input',
    #'                               periodos = list(c(1,2012), c(2,2012)))
    #' @export
    pnadc_painel_basico <- function(build_data = TRUE, ...){}
    
    
    loop <- function(data,
                     interview = 2,
                     int_final = 5){
        return(NULL)
    }
    

    That is, I took exactly your code, added NULL immediately after the line #' @import tidyverse, and replaced ... in the body of your functions with a simple return(NULL) to have syntactically valid code.

    Then I used devtools::document() using the RStudio shortcut Ctrl-Shift-D, and document() ran just fine for me.

    If you are still having problems after this step, it is due to code/comments in your package that you have not shown us.

    The reason for needing this step is that the Roxygen comments are generally to document objects or to give NAMESPACE directives. Since you do not have any R objects or roclets after

    #' @import tidyverse
    

    it interprets the next Roxygen comments as still belonging to the last roclet, @import. So, you need an intervening R object, for which you can use NULL.