从R Shiny应用程序输出纯HTML文件

10

我想部署我的R Shiny App,但我不能使用标准的方法,即使用runapp命令并将IP设置为0.0.0.0。我想知道是否有任何方式可以输出一个纯HTML文件,该文件将包括ui.R和server.R功能,以便我可以部署每天生成的纯HTML文件。对于R/Shiny,是否可能生成一个包含UI元素且模拟server.R功能/反应性的index.html文件?


2
简短的回答是不行的。如果您想部署一个交互式的Shiny应用程序,您需要部署一个shiny-server或使用shinyapps.io - Kevin Arseneau
然而,我想指出的是,您可以将Shiny功能嵌入文档中,例如rmarkdown。这可能适合您的需求。 - Kevin Arseneau
感谢您的回复。我能否使用rmarkdown引用R Shiny应用程序来输出一个纯HTML的Rmarkdown文件?我的意思是,我可以在本地机器上运行该应用程序,但是为了将其部署到更大的受众群体中,我很可能需要一个单独的HTML文件,因为我要部署的地方没有安装R。 - John
1
这真的取决于应用程序的功能。您需要选择适合工作的正确工具,我在本地使用shiny-server,它是一个简单的东西。 [R Notebooks](http://rmarkdown.rstudio.com/r_notebooks.html#saving_and_sharing)是自包含的`html`,其中嵌入了`R`代码以进行再现性。如果您使用RStudio IDE,则可以轻松地将它们打开并编辑为.Rmd文件。但是,在嵌入数据和任何其他支持资产之后,它们会非常快速地变得非常大。 - Kevin Arseneau
1个回答

15

基本上,@Kevin Arschenau在他的评论中已经指出了最重要的要点。

你需要一个R服务器才能执行shiny应用程序。没有办法将其转换为“纯HTML”并通过javascript运行交互性。原因是shiny应用程序必须在运行时执行R代码,而javascript不知道如何处理它。

如果您想部署到的站点没有安装R(和shiny-server),那么在该站点显示shiny应用程序的唯一方法是在不同的服务器上托管该应用程序并嵌入它(通过iframe)。例如,您可以在shinyapps.io上上传一个应用程序,并像这里演示的那样将其包含在您的网页中。

如果您的公司不允许您将应用程序托管在第三方网站上(出于披露原因),则必须咨询IT部门并要求他们

  • 在公司的服务器上安装Rshiny-server
  • 提供VM或docker容器,以便您可以在其中安装依赖项

在docker的情况下,有一些项目可以简化这个过程。例如,shinyproxy使创建具有LDAP身份验证的可扩展应用程序变得容易。

如果公司直接使用shiny-server,请注意免费版本中存在用户限制。

5年后的跟进

现在有一个名为“shiny for Python”的工具可用,可以让您以“无服务器”方式部署应用程序。这是通过在客户端上运行WebAssembly上的Python实现来实现的。有关更多详细信息,请参见此处。我不建议使用另一种语言重写现有的应用程序,但仍然认为值得在此提及。


谢谢您的回复。如果我获得了一个Linux服务器,我是否可以只安装R并让该实例充当服务器,还是我也需要安装Shiny Server? - John
据我所知,您需要安装shiny-server。有关在Ubuntu 14.04 x64上安装的说明,请单击此处 - Gregor de Cillia
我上一条评论有个修正:如果你看一下golem的dockerfiles,你会发现他们部署应用程序时并没有安装shiny-server - Gregor de Cillia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接