如here和here所述,有几种可能性可以将闪亮的应用程序作为一个程序包开发并在线托管。一种常见的方法是在程序包的inst-Directory中包含ui.R和server.R文件,并作为该程序包的一部分来编写使用此文件调用runApp()的函数。
但是,要在线启动此打包的应用程序,必须修改服务器上的文件结构,或者必须通过创建另一个skript来调用启动应用程序的功能。据我所知,这是not possible on shinyapps.io。
由于我希望/必须使用Shinyapps.io,因此我的问题是:如何最好地在Shinyapps.io上部署打包的应用程序?一种可能是将程序包上传到CRAN,将ui.R和server.R文件手动复制到新应用中,包括该程序包(可以访问程序包中包含的所有其他功能,除了UI和服务器,逻辑),然后将此应用程序部署在Shinyapps.io上。但是:还有其他/更好的可能性吗?
答案 0 :(得分:0)
您可以尝试将程序包上传到CRAN上,然后在ShinyApp中调用它。这将为您提供程序包的所有功能,以及可能对程序包感兴趣的其他所有人。缺点是,您将不得不进行大量的格式化,文档编制,错误检查,重建等操作。CRAN对于软件包必须“看起来”如何接受和托管它具有相当严格的规则。 检查它时,至少必须有 0个错误和0个警告。
如果您不想将其托管在CRAN上,则可以将包中的所有功能包括在目录中,并将这些文件source
包含在Shinyapp中。您可以在global.R
文件内甚至在server.R
文件内但在服务器功能之外执行此操作。
----- ./App_Directory/
---------- global.R
---------- server.R
---------- ui.R
---------- www /
--------------- function1.R
--------------- function2.R
--------------- function_etc.R
然后,您可以通过在global.R / server.R
文件中包含这些命令来获取它们:
source("www/function1.R")
source("www/function2.R")
source("www/function_etc.R")
您也可以将所有功能直接放在您的global / server文件中,但是采购它们可能更有条理,更易于维护。
----- ./App_Directory/
---------- global.R
---------- server.R
---------- ui.R