【问题标题】:Document a shiny application记录一个闪亮的应用程序
【发布时间】:2015-09-27 02:12:03
【问题描述】:

有没有办法为 R 闪亮的应用程序生成文档?

没有文档就很难维护闪亮的应用程序。

似乎所有的测试/文档生态系统都是为 R 包结构创建的。也许我们可以为闪亮的应用程序模拟/扩展这种行为?

一个例子:

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

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

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

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

【问题讨论】:

  • 您到底在记录什么?在 Shiny 应用程序中调用的大部分实际 R 代码都可以使用它自己的包和自己的文档。
  • @joran 好点。但对我来说,闪亮的应用程序只是一个我们的应用程序。即使在真正的 Web 应用程序中,您也可以调用外部图书馆员,但您仍然可以记录它。测试呢?
  • 如果你将逻辑层和 UI 层严格分开,并将逻辑放在可测试的库中,那么你就有了一个很好的划分,应该易于解释和记录。不确定是否可以在 UI 层上进行单元测试,但这始终是个问题。类似于 joran 的建议。
  • @agstudy 你有没有找到你正在寻找的解决方案?
  • @steveb 创建一个包并将所有功能放入其中。函数可以有 inputoutput 作为参数。

标签: r shiny roxygen2


【解决方案1】:

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

首先,Shiny 仅在一个 html 文档中创建了一个 Web。本文档分为几层,要开发一个庞大的应用程序,您需要正确管理这些层。但是,这个东西提出了一个很严重的问题,你如何组织代码?

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

就我而言,在一个大型项目中,我实现了 MVC 模式,但将其调整为 Shiny 架构。

【讨论】:

    【解决方案2】:

    更新

    添加shiny application的例子


    没有一个理想的解决方案,但这基本上就是我正在做的处理我的闪亮应用程序以创建一个健壮且“记录良好”的闪亮应用程序:

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

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

     R
         ui-view1.R
         ui-view2.R
         server-server1.R
         server-server2.R
         controls.R
    
    • 创建一个以反映不同应用程序元素的方式结构化的闪亮应用程序。基本上为每个应用程序页面创建一个视图/服务器文件。您当然可以将闪亮的应用程序放在 inst/ui 下或将其放在单独的项目中。

    这里是一个例子:

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

    【讨论】:

      猜你喜欢
      • 2015-10-13
      • 1970-01-01
      • 2013-07-08
      • 2016-05-23
      • 1970-01-01
      • 2016-02-09
      • 2017-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多