2015-06-04 17 views
5

Ho un'applicazione lucido in cui il server.R appare come di seguito:R Shiny list2env

shinyServer(function(input, output,session) { 
    temp<-reactive({ 
      obj1<-read.csv(.....) 
      v1<-c("obj2") 
      lst<-lapply(v1,read.csv(....) 
      list2env(lst) 
      ... 
     }) 

Sto creando un oggetto direttamente nella funzione reattiva chiamato obj1 e anche la creazione di obj2 utilizzando list2env. Sia obj1 e obj2 non si trovano nello stesso ambiente. Qual è l'ambiente in cui mi trovo quando sono all'interno di una funzione reattiva? Inoltre, non voglio utilizzare .GlobalEnv in list2env perché renderebbe questo oggetto disponibile in tutte le sessioni utente. Come faccio a creare list2env nello obj2 nello stesso ambiente di obj1?

+0

perfetta - che ha funzionato, grazie ! – Sri

risposta

6

La funzione environment() restituirà l'ambiente corrente. Pertanto, se lo si utilizza all'interno di una funzione, verrà restituito l'ambiente della funzione. È quindi possibile utilizzare quello con

list2env(lst, envir=environment()) 

(Anche se personalmente ho quasi sempre trovato più facile mantenere i dati in un elenco piuttosto che creare un gruppo di variabili distinte per l'ambiente.)

Problemi correlati