[R-pkg-devel] Assigning an object to the global environment (shiny package)

Tiago Olivoto t|@goo||voto @end|ng |rom gm@||@com
Thu Jan 4 23:20:04 CET 2024


Dear all,
Thanks all for the tips and sorry for the automatic reply.
Best regards,
Olivoto

Em qui., 4 de jan. de 2024 às 18:00, Iris Simmons <ikwsimmo using gmail.com>
escreveu:

> You cannot and should not ignore this.
>
> An R package should never ever be assigning variables into environments
> for which they haven't been granted permission to do so. You should ask the
> user whether they want the object assigned in the global environment before
> doing so, and the default should be no so that it will not be assigned in
> non interactive sessions.
>
> On Thu, Jan 4, 2024, 15:54 Tiago Olivoto <tiagoolivoto using gmail.com> wrote:
>
>> Hi everyone!
>> I which a happy new year!
>>
>>
>> I'm coding a shiny app and I would like to include an option so that the
>> users can assign the results to the global environment for further
>> analysis.
>>
>> I have written the following code, which checks if 'globalvarname' (the
>> name of object to be created in the global environment) already exists,
>> returning an error if so, and asking to the user change the name.
>>
>> code
>> -----------
>> observeEvent(input$savetoglobalenv, {
>>  ### more code here
>>
>>   if (exists(input$globalvarname, envir = globalenv())) {
>>     sendSweetAlert(
>>       session = session,
>>       title = "Error",
>>       text = paste0("The object'", input$globalvarname, "' already exists
>> in the global environment. Please, change the name."),
>>       type = "success"
>>     )
>>   } else {
>>     assign(input$globalvarname, report, envir = globalenv())
>>     ask_confirmation(
>>       inputId = "myconfirmation",
>>       type = "warning",
>>       title = "Close the App?",
>>       text = paste0("The object'", input$globalvarname, "' has been
>> created
>> in the Global environment. To access the created object, you need first to
>> stop the App. Do you really want to close the app now?"),
>>       btn_labels = c("Nope", "Yep"),
>>       btn_colors = c("#FE642E", "#04B404")
>>     )
>>   }
>> })
>> ---------
>>
>> Thus, the object is only created when the user decides to assign such an
>> object to the global environment. As the object's name is checked, there
>> is
>> no way of replacing some object already available in the global
>> environment.
>>
>> Of course, when running devtools::check(), a NOTE is returned
>>
>> Found the following assignments to the global environment:
>>   Arquivo 'plimanshiny/R/mod_analyze.R':
>>
>> Can I ignore this safely?
>> Is there any suggestion to handly this without using 'assign()'
>>
>> Thanks in advance,
>> Olivoto
>>
>>         [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-package-devel using r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>>
>

	[[alternative HTML version deleted]]



More information about the R-package-devel mailing list