记录闪亮的应用程序

Document a shiny application

有什么方法可以为 R shiny 应用程序生成文档吗?

在没有文档的情况下维护一个闪亮的应用程序变得非常困难。

似乎tests/documentation的所有生态系统都是为R包结构创建的。也许我们可以 emulate/extend 将这种行为用于闪亮的应用程序?

一个例子:

反应式表达式通常是可以包含复杂数据结构的 R 闪亮元素。

   filtered_dat <- reactive({ 
      dx[ NAME == input$crr & TOU == input$tou & 
            PlotYear == input$year. & PlotMonth == input$season]
    })

为了提供更多上下文,我在这里是在使用 R shiny 构建完整的 Web 应用程序的上下文中。所有业务逻辑都包装在一个单独的包中。

为了测试 Ui 我认为这很复杂(例如可以使用 Rselenium),但是从 roxygen2 评论生成文档只是解析。拥有这样的工具应该很容易。

这是一个很好的问题。如何使用 Shiny 创建复杂清晰的 Web 应用程序?我认为组织一个庞大的项目是 Shiny 架构的弱点。

首先,Shiny 仅在一个 html 文档中创建一个 Web。本文档分层,要开发一个巨大的应用程序,您需要正确管理这些层。不过这个东西有一个很大的问题,代码怎么组织的?

嗯,在这里,有不同的方法可以做到这一点。事实上,你可以像 Joe Cheng 一样应用不同的方法:

就我而言,在一个巨大的项目中,我实现了 MVC 模式,但使其适应 Shiny 架构。

更新

添加示例 shiny application


没有理想的解决方案,但这基本上是我处理闪亮应用程序以创建健壮且良好的 "documented" 闪亮应用程序的方法:

  • 创建一个包,将所有逻辑放入其中。不要担心从包中调用 input/output 结构作为参数。还尝试在您的包中创建一些控件。例如,您可以拥有一些基本闪亮控件的内联版本。

一个典型的包会有这样的结构:

 R
     ui-view1.R
     ui-view2.R
     server-server1.R
     server-server2.R
     controls.R
  • 创建一个闪亮的应用程序,其结构以反映您的不同应用程序元素的方式进行。基本上为每个应用程序页面创建一个 view/server 文件。你当然可以把 shiny 应用放在 inst/ui 下,或者放在一个单独的项目中。

举个例子:

 app 
     ui.R
     server.R
     global.R
     views
        view1.R
        view2.R
     servers
        server1.R
        server2.R
     init 
        global1.R
        gloabl2.R