将大shinydashboard应用程序拆分成碎片

时间:2015-05-31 17:28:00

标签: r file shiny shinydashboard

我对shinyshinydashboard都很陌生。我的第一个应用程序已经发展到我希望将其重构为片段的大小,如此处暗示http://rstudio.github.io/shinydashboard/structure.html

dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody()
)

这应该是一项相当简单的任务。但是,我找不到任何关于如何将我的应用程序拆分成多个文件的示例,我不确定这样做的最佳方法是什么。

到目前为止我无法工作:我尝试在每个部分内调用source("myBody.R")

2 个答案:

答案 0 :(得分:3)

您可以在其他文件中包含一些UI代码,然后使用

将其包含在主UI中
source("file.R", local=TRUE)$value

您可以在这篇闪亮文章http://shiny.rstudio.com/articles/scoping.html

上看到更多详情

答案 1 :(得分:1)

  1. https://stackoverflow.com/a/33584292/4606130中查看@ Shape的策略。
  2. <强> server.R:

        library(shiny)
        source('sub_server_functions.R')
    
        function(input, output, session) {
            subServerFunction1(input, output, session)
            subServerFunction2(input, output, session)
            subServerFunction3(input, output, session) 
        }
    

    其他想法是:

    1. 将您的数据调用和常量放在 global.R 中,这可以由您的ui和server.R文件共享。查看http://shiny.rstudio.com/articles/scoping.html

    2. 查看Shiny的新模块方法。我仍然在掌握这一点,但看起来很有希望合理化。请参阅http://shiny.rstudio.com/articles/modules.html

    3. 此后,flex仪表板.Rmd文件的示例看起来很薄!

      ---
      title: "screenR"
      output: flexdashboard::flex_dashboard
      runtime: shiny
      ---
      
      ```{r}
      # include the module
      source("screenrdata.R")
      ```
      
      Charts
      ======
      
      ### Screening Scatter
      
      ```{r}
      
      # call the module
      xyUI("id1")
      callModule(screenchart, "id1")
      ```