R Shiny-第一个块中的数据集加载在第二个块中不存在...?

时间:2019-02-11 14:07:02

标签: r shiny r-environment user-environment

我使用库 learnr 构建的闪亮应用程序中出现一个奇怪的错误。关于我刚刚加载并可视化的对象的错误“ 找不到对象”(表示该对象不存在?)

尽管我没有可复制的示例,但有些人可能会理解是什么导致了错误:

  • 我有第一个块{r load},它加载数据集。这里没有错误,我什至可以可视化数据集(下面的截图)

  • 然后我有第二个块,我想在那儿操纵数据集。但这告诉我数据集不存在!怎么可能,我只是将它可视化了一个? ...

enter image description here

我不明白一个数据集怎么可能存在于一个块中,而不是另一个。这是否意味着数据集未加载到全局环境中?学习者库有问题吗?

也许有人会有想法,或者我可以测试的东西。预先谢谢你。

编辑: 问题在于环境/工作空间。在第一个块中,即使我加载数据集,也不会将其存储在环境中。我在第二个块中测试了功能ls(),它告诉我工作空间中没有对象。加载的数据集不在这里,我不知道为什么...

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为,Shiny不存储任何数据。您必须按照以下说明将其手动从一个块传递到另一块(仅从server添加代码段):

server <- function(input, output, session) {
  output$heat <- renderPlotly({
    Name<-c("John","Bob","Jack")
    Number<-c(3,3,5)
    Count<-c(2,2,1)
    NN<-data.frame(Name,Number,Count)
    render_value(NN) # You need function otherwise data.frame NN is not visible
    # You can consider this as chunk 1
  })

  render_value=function(NN){
   # Here your loaded data is available
     head(NN)
   # You can consider this as chunk 2 
    })  
  }           
}

shinyApp(ui, server)

您可以在此处找到完整的代码:Subset a dataframe based on plotly click event

OR

按照此处的建议创建global.R文件,并遵循以下URL:R Shiny - create global data frame at start of app