在 shinyapps.io 上部署打包的 shiny-app
Deploying packaged shiny-app on shinyapps.io
如 here and 所述,有多种可能性可以将 shiny-application 开发为一个包并在线托管它。一种常见的方法是在包的 inst-Directory 中包含一个 ui.R 和一个 server.R 文件,并作为包的一部分编写一个函数,该函数使用这些文件调用 runApp() 。
但是,要在线启动这个打包的应用程序,必须修改服务器上的文件结构,或者必须通过创建另一个脚本来调用启动应用程序的函数。据我所知,这是not possible on shinyapps.io。
自从我 want/must 使用 shinyapps.io,我的 问题 是:如何最好地在 shinyapps.io 上部署打包的应用程序?一种可能是将包上传到 CRAN,手动将 ui.R 和 server.R 文件复制到一个新的应用程序中,包含包(以访问包中包含的所有其他功能,除了UI 和服务器逻辑),然后在 shinyapps.io 上部署此应用程序。但是:是否有 other/better 种可能性?
您可以尝试将您的包上传到 CRAN 并在您的 shinyApp 中调用它。这将为您提供包的所有功能以及可能对您的包感兴趣的其他人。这样做的缺点是,你将不得不经历大量的格式化、文档编制、错误检查、重建等。CRAN 对包必须如何 "look" 喜欢接受和托管它有相当严格的规定.
至少你在检查时必须有 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
如 here and
但是,要在线启动这个打包的应用程序,必须修改服务器上的文件结构,或者必须通过创建另一个脚本来调用启动应用程序的函数。据我所知,这是not possible on shinyapps.io。
自从我 want/must 使用 shinyapps.io,我的 问题 是:如何最好地在 shinyapps.io 上部署打包的应用程序?一种可能是将包上传到 CRAN,手动将 ui.R 和 server.R 文件复制到一个新的应用程序中,包含包(以访问包中包含的所有其他功能,除了UI 和服务器逻辑),然后在 shinyapps.io 上部署此应用程序。但是:是否有 other/better 种可能性?
您可以尝试将您的包上传到 CRAN 并在您的 shinyApp 中调用它。这将为您提供包的所有功能以及可能对您的包感兴趣的其他人。这样做的缺点是,你将不得不经历大量的格式化、文档编制、错误检查、重建等。CRAN 对包必须如何 "look" 喜欢接受和托管它有相当严格的规定. 至少你在检查时必须有 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