【问题标题】:Deploying packaged shiny-app on shinyapps.io在 shinyapps.io 上部署打包的闪亮应用程序
【发布时间】:2019-04-24 03:00:54
【问题描述】:

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

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

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

【问题讨论】:

    标签: r shiny shinyapps


    【解决方案1】:

    您可以尝试在 CRAN 上上传您的包并在您的 shinyApp 中调用它。这将为您提供包的所有功能以及可能对您的包感兴趣的其他所有人。这样做的缺点是,您将不得不经历大量的格式化、记录、错误检查、重建等。CRAN 对包必须“看起来”如何接受和托管它有相当严格的规定。 检查时至少必须有 0 个错误和 0 个警告


    如果您不想在 CRAN 上托管它,您可以将包中的所有功能包含在一个目录中,并将 source 这些文件包含在您的 Shinyapp 中。您可以在 global.R 文件内,甚至在 server.R 文件内执行此操作,但在服务器函数之外。

    ----- ./App_Directory/
    ---------- 全球.R
    ---------- 服务器.R
    ---------- ui.R
    ---------- www/
    --------------- 功能1.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/
    ---------- 全球.R
    ---------- 服务器.R
    ---------- ui.R

    【讨论】:

    • 谢谢。可能性一基本上是我在问题中提到的解决方案。但是有没有可能避免手动构建 server.R 和 ui.R 以将其上传到 shinyapps.io?
    • 我不知道,但我也不太了解 shinyapps.io 幕后发生的事情。但是我觉得把所有的包函数都放到一个脚本里,定义一个ui.R/server.R,source脚本然后上传应该不会太难。
    猜你喜欢
    • 2017-09-05
    • 2018-02-03
    • 1970-01-01
    • 2020-09-30
    • 2016-12-28
    • 2014-07-31
    • 2016-06-15
    • 2020-08-29
    • 2020-08-13
    相关资源
    最近更新 更多