1

正如这里这里所描述的,有几种可能性可以将一个闪亮的应用程序开发为一个包并在线托管它。一种常见的方法是在包的 inst-Directory 中包含一个 ui.R 和一个 server.R 文件,并作为包的一部分编写一个使用这些文件调用 runApp() 的函数。

但是,要在线启动这个打包的应用程序,必须修改服务器上的文件结构,或者必须通过创建另一个脚本来调用启动应用程序的函数。据我所知,这在 shinyapps.io 是不可能的

由于我想要/必须使用 shinyapps.io,我的问题是:我怎样才能最好地在 shinyapps.io 上部署打包的应用程序?一种可能性是将包上传到 CRAN,手动将 ui.R 和 server.R 文件复制到新应用程序中,包含包(以访问包中包含的所有其他功能,除了 UI 和服务器-逻辑),然后在 shinyapps.io 上部署这个应用程序。但是:还有其他/更好的可能性吗?

4

1 回答 1

1

您可以尝试在 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")

您也可以将所有功能直接放在您的全局/服务器文件中,但采购它们可能更有条理且更易于维护。

----- ./App_Directory/
---------- global.R
---------- server.R
---------- ui.R

于 2018-11-21T19:11:23.497 回答