【问题标题】:How can I make ShinyApp to use environmental variables when deployed on the web?如何让 Shiny App 在 Web 上部署时使用环境变量?
【发布时间】:2014-10-28 13:47:46
【问题描述】:

几个小时以来,我一直在苦苦挣扎。我的Shiny App 应该显示我在 R 环境中的一些变量。它一切正常,但是当我将它部署到网络时,我收到如下错误:

Error: object 'df1' not found

如何添加df1 和我的其他数据框,以便在部署时将它们打包为Shiny App 的一部分?

请帮忙。这是我的示例代码:

server.R

library(shiny)

shinyServer(function(input,output){
output$datasets <- renderTable({
switch(input$choice,

         "1" = as.data.frame(df1)          
         "2" = as.data.frame(df2) })
  }))

UI.R

shinyUI(
fluidPage(theme = "bootstrap.css",

sidebarPanel(        
  conditionalPanel(
    condition = "input.theTab == 'datasets' ",
    h3('Display Sample Data'),    
    selectInput("choice", "Selection", choices = c("Group1"=1,"Group2"=2)),

  )),

mainPanel(
  tabsetPanel(
    tabPanel( "datasets", tableOutput("datasets"), value = 'datasets'),
    id = "theTab"))
)

【问题讨论】:

  • 请提供一个可重现的最小示例。
  • @jdharrison 感谢约翰,我添加了我的代码的较短版本
  • @jdharrison 基本上我的 R 环境中有df1df2,我只想显示它们。当我在本地运行应用程序时它可以工作,但是当我部署它时 R 说它找不到对象 df1df2

标签: r shiny


【解决方案1】:

在最近的闪亮版本中,您可以在 global.R 文件中包含变量,这些变量将可用于 ui 和服务器。在此处查看范围规则:

http://shiny.rstudio.com/articles/scoping.html

【讨论】:

  • 谢谢我试过了,但我不能即时生成数据,因为它依赖于本地文件
  • mm,是的,但是,您仍然在读取文件,然后可能进行处理或计算。如果您在 global.R 中执行此操作,那么它将对 ui.R 和 server.R 可见。也许我错过了你如何在你的例子中获得 df1 和 df2。
【解决方案2】:

终于找到解决办法了!!基本上我应该在UI.R 文件的顶部加载我的工作区。这样:

attach("myWorkspace.RData")

【讨论】:

  • 我强烈建议不要依赖这个。而是将 df1 和 df2 的创建作为代码的显式部分。
  • @hadley 当需要在 R 控制台中以交互方式创建 df1 和 df2(或 R6 obj)时的任何建议。让他们用户可以从控制台启动闪亮的应用程序。 global.R 不包括在内。
  • @jangorecki 编写一个以 df1 和 df2 作为参数的函数,然后创建应用程序并运行它。
  • @hadley IMO 您的评论似乎是对所提问题的最佳回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-23
  • 2022-10-15
  • 2016-12-09
  • 2015-08-10
  • 2017-03-08
  • 2020-04-15
相关资源
最近更新 更多