维护不同版本的Shiny应用程序的工作流程

时间:2017-06-16 12:39:30

标签: r git shiny

最近我为不同的客户制作了几个非常相似的Shiny应用程序,并在shinyapps.io上托管它们。

每个应用都有不同的标题,不同的数据,品牌等方面的一些差异,但其他代码非常相似。

我在维护这些应用时遇到了问题。找到并修复错误时,我目前必须通过5个不同的应用程序并每次进行更改。

有没有人对如何处理这个有好的建议? Git分支?我知道最好的解决方案是拥有一个应用程序并上传不同的数据,但不幸的是,这是不可能的。

我想继续使用shinyapps.io,但如果它让我的工作流程更好,我就可以在其他地方托管应用程序了。

2 个答案:

答案 0 :(得分:1)

正如我在评论shinyModules()中写的那样可以帮助您:https://shiny.rstudio.com/articles/modules.html

闪亮的模块是闪亮的功能,就像普通的功能一样重复代码。

或换句话说:

  • 重复代码 - >功能
  • 重复闪亮功能 - >闪亮的模块

由于文档在这里和那里有点复杂,我在这里写了一个简化的例子: Create a reactive function outside the shiny app

您可以将所有闪亮的模块存储在文件modules.R中,并为每个加载模块的应用程序global.R添加source("../modules.R"脚本。然后,您只需更新modules.R中的功能。结构的改变可能在一开始就需要一段时间。但是,我认为从长远来看,它可以为更复杂的应用带来回报。

答案 1 :(得分:0)

我最终创建了一个包含应用程序所需代码的大部分库,正如Adam Spannbauer在评论中所建议的那样。

它并不完美;我仍然有一些重复,我必须在GitHub上有这个库,以便它可以与shinyapps.io一起使用。但是,它对我以前做的事情有了很大的改进。