2

我对shiny和很陌生shinydashboard。我的第一个应用程序已经增长到一个大小,我想将它重构为片段,如http://rstudio.github.io/shinydashboard/structure.html提示所示:

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

这应该是一个相当简单的任务。但是,我找不到任何关于如何将我的应用程序拆分为多个文件的示例,并且我不确定执行此操作的最佳方法是什么。

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

4

2 回答 2

4

您可以在不同的文件中包含一些 UI 代码,然后将其包含在您的主 UI 中

source("file.R", local=TRUE)$value

您可以在这篇闪亮的文章 http://shiny.rstudio.com/articles/scoping.html上查看更多详细信息

于 2015-05-31T22:58:44.573 回答
2
  1. 在https://stackoverflow.com/a/33584292/4606130中查看 @Shape 的策略。

服务器.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

在此之后,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")
```
于 2016-06-23T13:01:49.427 回答