Thanks, everyone, Following Mark suggestion:
The problem I'm trying to solve is: Users of my package metan (https://CRAN.R-project.org/package=metan), sometimes need to extract 2-3 variables from a given data.frame and put them as vectors in the global environment to use in other package's functions. Given that df has the columns, ENV, GEN, REP, I would need to run the following codes ENV <- df$ENV GEN <- df$GEN REP <- df$GEN I'm looking for a more efficient way to do that and just finished the following function as_vector <- function(.data, ...){ if(missing(...)){ df <- select(.data, everything()) } else{ df <- select(.data, ...) } for(i in 1:ncol(df)){ var_name <- names(df[i]) var_name <- ifelse(exists(var_name, envir = .GlobalEnv), paste(var_name, "_vct", sep = ""), var_name) assign(var_name, as.vector(df[[i]]), envir = .GlobalEnv) } } Then, users could simply run as_vector(df) or as_vector(df, GEN, ENV) But I'm not sure if this fits with the CRAN policies. Cherss, Tiago Em sex., 11 de dez. de 2020 às 16:03, Ben Bolker <bbol...@gmail.com> escreveu: > I think this solution will *not* be acceptable to CRAN. (The policy > doesn't say "don't modify the global workspace unless you're careful", > it says "don't modify the global workspace".) You can ask for an > exception, but your chances of success are very low. > > It would be best to find a way to solve your problem without > assigning to the global workspace. Can you assign to an environment > that is contained within your package, which all of the functions in > your package will also have access to? > > cheers > Ben Bolker > > On 12/11/20 1:52 PM, Tiago Olivoto wrote: > > Thank Matt for your response. > > Would be an acceptable solution to check if the variable exists first and > > creating the new variable with a suffix? Please, see the following > example > > > > var_name <- "name" > > var_name <- ifelse(exists(var_name), > > paste(var_name, "_vct", sep = ""), > > var_name) > > and then > > > > assign(var_name, 1, envir = .GlobalEnv) > > > > Cheers, > > Tiago > > > > Em sex., 11 de dez. de 2020 às 15:20, Matt Denwood <m...@sund.ku.dk> > escreveu: > > > >> > >>> On 11 Dec 2020, at 18:32, Tiago Olivoto <tiagooliv...@gmail.com> > wrote: > >>> > >>> Hi everyone, > >>> This can be a very simple question, but I really have the following > >> doubt. > >>> > >>> CRAN Policies says that 'Packages should not modify the global > >> environment > >>> (user’s workspace)'. So, may I or may I not create a function that will > >>> call internally the following code? (a simple example) > >>> > >>> assign("name", 1, envir = .GlobalEnv) > >> > >> You may not - and for good reason, as the user may have an existing > >> variable called “name” that will be destroyed by such an action. If you > >> run "R CMD check —as-cran" on a package containing this code you will > get a > >> warning (or maybe a note, I can’t remember), and the package would most > >> likely be refused if you tried to submit it to CRAN. > >> > >> Cheers, > >> > >> Matt > >> > >> > >>> > >>> Cheers > >>> Tiago > >>> > >>> [[alternative HTML version deleted]] > >>> > >>> ______________________________________________ > >>> R-package-devel@r-project.org mailing list > >>> > >> > https://eur02.safelinks.protection.outlook.com/?url=https%3A%2F%2Fstat.ethz.ch%2Fmailman%2Flistinfo%2Fr-package-devel&data=04%7C01%7Cmd%40sund.ku.dk%7C42392098d3324de389b008d89dfad39d%7Ca3927f91cda14696af898c9f1ceffa91%7C0%7C0%7C637433048371869663%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C2000&sdata=NFTbsJDlZNQWajN%2F%2BeftuclrkJSGtTnM9kEtobn9VLs%3D&reserved=0 > >> > >> > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > R-package-devel@r-project.org mailing list > > https://stat.ethz.ch/mailman/listinfo/r-package-devel > > > > ______________________________________________ > R-package-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-package-devel > [[alternative HTML version deleted]] ______________________________________________ R-package-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-package-devel