Ivan, Declaring the variables inside the function solved the problem (protocolo <- X1 <- X2 <- ... X21 <- NULL). Thanks for the help and suggestions for improving the code. Best Regards, Igor
Em qui., 6 de jan. de 2022 às 11:37, Ivan Krylov <krylov.r...@gmail.com> escreveu: > On Wed, 5 Jan 2022 17:15:20 -0300 > Igor L <igorlal...@gmail.com> wrote: > > > Found the platform-specific device: > > 'X11' > > > how to solve it? > > One of the tricks that work (in the sense that calls to functions using > non-standard evaluation don't result in warnings about "Undefined > global functions or variables") is to declare the variables locally, > inside the function: > > protocolo <- X1 <- X2 <- ... X21 <- NULL > var <- readr::read_csv2(...) ... > > Alternatively, since you know that the file always has 21 columns, > you can pass the variable to `colnames<-` instead of dplyr::rename, > together with a vector of column names you already have in the > nomes.colunas vector. This way, you won't need to declare the 21 dummy > variable. > > By the way, you shouldn't declare at least download.file and unzip > functions as global variables. Instead, import them from the utils > package in your NAMESPACE (or using the @importFrom Roxygen tag, if you > use Roxygen). > > There are other ways the package code could be improved: > > - There doesn't seem to be a need for the dynamically-named variable > you create using assign(paste0('pedidos', i), var) and remove soon > after; you can just use `var` instead of get(paste0('pedidos', i)). > - If you're worried about leaving temporary variables around, move > the loop body into a separate function so that anything you don't > return from it would be cleaned up automatically. > - You can future-proof your package by creating the URLs with > paste0(' > https://dadosabertos-download.cgu.gov.br/FalaBR/Arquivos_FalaBR_Filtrado/Arquivos_csv_ > ', > year, '.zip') instead of hard-coding their list. It seems likely to > me that once the 2022 Right to Information Law report is available, > it'll have a predictable URL. If not, then you'll update the > package (as you were going to anyway). > - If you need to iterate over indices in a vector, use for (idx in > seq_along(vector)) instead of for (i in vector) and match() to > find the index. Though in this case, the code can be modified to > avoid the need for the index in the loop body. > > -- > Best regards, > Ivan > [[alternative HTML version deleted]] ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel