[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
>vector
>received by the function from the user. Hence, the package creates a
>global
>variable to store the data which can also be used by the server
>function.
>
>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
>restores
>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
>not
>exist, then the variable assigned to the global environment is removed
>on
>exit. I have included the code to clarify my argument. Please see below
>for
>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
>the
>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?
>However,
>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
>https://stat.ethz.ch/mailman/listinfo/r-package-devel

-- 
Sent from my phone. Please excuse my brevity.



More information about the R-package-devel mailing list