[R-pkg-devel] Assignments to the global environment and use of on.exit

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Tue Jun 22 18:05:13 CEST 2021

Just don't. E.g. https://stackoverflow.com/questions/12598242/global-variables-in-packages-in-r

On June 22, 2021 1:47:56 AM PDT, Siddhanta Phuyal <siddhantaphuyal7159 using gmail.com> wrote:
> Hello,
>A few weeks ago, I submitted a package to CRAN. The automated system
>rejected the package showing the following note:
>Found the following assignments to the global environment:
>  File 'EuclideanSD/R/EuclideanSD.R':
>    assign("nums", x, envir = globalenv())
>Context of the problem:
>The package has a function that takes a vector from the user. The
>vector is
>used by the shiny app to produce the desired output. The sever and UI
>functions are located inside the 'inst' folder. Since they are located
>at a
>different location, the server function cannot directly access the
>received by the function from the user. Hence, the package creates a
>variable to store the data which can also be used by the server
>The solution I offered:
>However, before assigning the variable to a global environment, the
>function checks whether there is a variable with the same name in the
>global environment. If there is such a variable, then the function
>that variable back to its original state by using on.exit(num<-oldnum)
>prior to exiting the function. On the contrary, if such a variable does
>exist, then the variable assigned to the global environment is removed
>exit. I have included the code to clarify my argument. Please see below
>the code:
>if (exists("nums",where = 1)){
>    oldnums <- nums
>    nums <- x
>    shiny::runApp(system.file(package="EuclideanSD","app"))
>    on.exit(nums<-oldnums)
>  }else{
>    assign("nums",x,envir = globalenv())
>    shiny::runApp(system.file(package="EuclideanSD","app"))
>    on.exit(remove("nums",pos=1))
>  }
>I tried to explain the same to the maintainers of CRAN by replying to
>message that I got from the CRAN. However, there was no response.
>I have two questions that I hope to get help from this community:
>1) Is my solution reasonably okay with the requirements of the CRAN?
>2) If the solution is not okay, what could be the better solution?
>the features of the package cannot be changed. For example, the data
>has to
>be fed through the function and not through the website.
>Thank you for your help.
>Looking forward to hearing from you.
>Best Regards,
>Siddhanta Phuyal
>	[[alternative HTML version deleted]]
>R-package-devel using r-project.org mailing list

Sent from my phone. Please excuse my brevity.

More information about the R-package-devel mailing list