我有一个 Shiny 的应用程序,其中server.R如下所示:

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

我直接在名为obj1的响应式(Reactive)函数中创建一个对象,并使用list2env创建obj2obj1obj2不在同一环境中。当我处于响应式(Reactive)函数内部时,我所处的环境是什么?
另外,我不想在.GlobalEnv中使用list2env,因为它会使该对象在所有用户 session 中都可用。如何使list2env在与obj2相同的环境中创建obj1

最佳答案

environment()函数将返回当前环境。因此,如果在函数内部使用它,它将返回函数的环境。然后,您可以将其与

list2env(lst, envir=environment())

(尽管就我个人而言,我几乎总是发现将数据保存在列表中比在环境中创建一堆单独的变量更容易。)

10-06 04:23