【问题标题】:Running R code from website (without paid hosting)从网站运行 R 代码(无付费托管)
【发布时间】:2020-08-01 06:15:48
【问题描述】:

有很多相关的问题,但所有这些都是关于 Shiny R 的,这需要付费托管始终可用(因为诸如 shinyapps.io 之类的免费选项有限制)。所以我想知道是否有任何替代解决方案可以从托管的网站(例如 GitHub)运行 R 代码。

为了更清楚,我想根据用户给出的一些基本设置,使用 R 脚本以交互方式显示一些图和一些派生信息。举一个超级简单的例子:

var_from_gui = 7 # input in HTML, user e.g. clicks OK
print(paste("input plus five is:", var_from_gui + 5)) # info displayed on website
plot(c(1, 2, 5) * var_from_gui) # image to be displayed on website

首先,我认为这在 Shiny R 中很有可能——对吗?

其次,这是否可能以另一种方式允许我通过例如运行它GitHub页面? (其实我也可以使用this more comprehensive university server,但我认为它对这种情况没有帮助。)

我也知道htmlwidgets,但据我了解,它只允许非常有限的交互,例如过滤,而不是像根据用户输入绘制绘图这样的事情。

我发现并且似乎很适合的一个选项是 OpenCPU,但令人沮丧的是明显缺乏活动(没有最近的问题/答案/帖子等)并且几乎没有任何有用的教程或概述,这也使得难以评估是否值得一试。

【问题讨论】:

  • 您好@gaspar,您可以尝试 AWS 免费套餐 (aws.amazon.com/free) 并启动一个 EC2 实例,您可以在其中安装 Shiny Server 和 R Server。
  • 谢谢,很高兴知道,但 AWS 免费套餐也有限制;特别是它最多持续 1 年

标签: html r shiny hosting interactive


【解决方案1】:

现在我想我可以回答我自己的问题了——尽管 Marc 的回答总体上似乎也很有用(并提示我写下我自己的答案)。

本质上,shinyapps.io worked 对我来说非常好。对于一个小型且不太常用的应用程序,免费计划很容易。更重要的是,即使在网站因过度使用而出现故障的情况下,R 用户也可以在自己的计算机上轻松运行 Shiny 应用程序(前提是他们安装了 R)。

当然,问题中给出的示例很可能在 Shiny R 中实现:通常代码是通过eventReactive 函数执行的,对于“触发”按钮,可以使用actionButton

【讨论】:

    【解决方案2】:

    您可以在公共OpenCPU server 上免费托管您的 R 函数。

    我已经为自己的应用程序做到了这一点,并且效果很好。您在问题中列出的任何限制都没有。也尝试过 Shiny,但正如你提到的,对于我想要实现的目标不够灵活。

    OpenCPU 确实是一个很棒的工具,虽然没有得到社区很好的支持(不知道为什么,看看它带来的巨大价值)

    我按照文档here 启动并运行它。设置有点乏味,但记录良好。

    上线后,我发现这台服务器非常可靠 - 你的 R 函数持续可用,延迟非常低(根据我的经验,比 Shiny 服务器快得多)

    您还要求“从托管网站运行 R 代码的解决方案,例如,在 GitHub 上” - OpenCPU 确实通过您的自定义 GitHub 存储库处理 CD/CI(持续集成) webhook 机制。 我还为我的应用程序实现了这样的 webhook,因此可以确认它运行顺利。只需遵循编写良好的提供文档here

    【讨论】:

      【解决方案3】:

      对于最多 5 个流量很小的小应用程序,您可以使用https://www.shinyapps.io/ 上的免费计划

        • 非常容易部署,因为它是一个 RStudio 服务

      【讨论】:

      • 是的,但这就是我所说的“有限免费”选项的意思:他们每月有一个“25 小时活动时间”上限,虽然这听起来很公平,但我不知道这意味着多少使用量
      • 也许使用免费选项,然后看看是否足够?
      • 确定这是我打算做的。我之所以问这个问题是因为目前我只从“传闻”中听说过 Shiny R。在我开始学习它之前,我想确保没有更好的选择(和/或我应该知道关于部署闪亮 R 的其他重要信息)。
      • 您也可以使用 GCS 或 AWS 并设置 R 引擎或容器,总是有利有弊,因此最佳解决方案始终取决于您的项目要求,例如域、流量、后端数据库、等等。没有单一的最佳解决方案
      • 你知道你总是可以使用 shinyApp() 函数在本地托管 shinapplications 以供开发使用
      猜你喜欢
      • 1970-01-01
      • 2012-03-04
      • 1970-01-01
      • 1970-01-01
      • 2017-12-10
      • 1970-01-01
      • 2017-05-06
      • 2013-10-28
      • 2013-08-24
      相关资源
      最近更新 更多