76

冒着被mods “问题太宽泛”的锤子击中的风险,我想问一下,鉴于出现了大量的交互式 RShiny工具和包,你什么时候使用哪个?

  1. Shiny - 对我来说,唯一的缺点是您的项目需要从闪亮的服务器上运行,但似乎是最佳选择。

  2. shinydashboard - 闪亮但有很好的标注价值框。

  3. flexdashboard - 把它写在 Rmd. 直接 Shiny 没有给你带来什么?如果您乐于传递数据,也许对通过电子邮件发送给客户有用?我一直在玩,flexdashboard但它无法使用数据表(库(DT))让我觉得它需要更多的迭代。

看看其他答案,我不是一个人在问这个问题

创作者们提供了很多画廊来展示他们的包装/方法,但你怎么知道该走哪条路?

使用其中一种的明显优势是什么?

4

4 回答 4

27

有一点需要注意。交互性不一定需要在其背后运行代码的服务器。可以使用嵌入式 JavaScript 提供交互性,该 JavaScript 将在客户端执行(如 plotly、highcharts、leaflet 等)。因此,如果我们不使用“交互性”这个词,而是明确地描述交互性,那么您的选择将变为:

  • Shiny:需要一个服务器来执行用户输入的 R 代码。可以实现任何布局。可以通过处理服务器端(在 R 中)或客户端(在嵌入式 JavaScript 中)来运行交互式代码。
  • shinydashboard:需要一个服务器来执行用户输入的 R 代码。可以实现仪表板布局。包含一些设计用于仪表板布局的特定小部件。可以通过处理服务器端(在 R 中)或客户端(在嵌入式 JavaScript 中)来运行交互式代码。
  • flexdashboard:只是一个看起来像仪表板的文档。还包含一些设计用于仪表板布局的特定小部件。只能在客户端运行交互式代码(在嵌入式 JavaScript 中)。

因此,基本上,如果现有包(使用 htmlwidgets)可以提供所需的任何交互性,那么您可以只使用 flexdashboard 而无需将其部署到任何 Shiny 服务器。否则,您确实需要部署到 Shiny 服务器,并且应该使用 Shiny 或 Shinydashboard。

于 2016-10-03T11:57:46.367 回答
14

我喜欢将闪亮的模块放在 flexdashboard 中。只要您放入runtime: shiny标题YAML部分,使用闪亮的模块就应该相对简单。相对而言,我的意思是,花一天时间阅读 RStudio 中的所有示例,然后尝试对您的代码执行相同的操作。一旦您完成了学习曲线,flexdashboards 中的模块将使未来的开发更加精简、轻松,并且根据我的经验,让我有机会真正专注于我被要求解决的基于数据的基础问题。我认为flexdashboards + shiny modules两全其美:使用 flexdash 分解一些布局项,轻松添加或删除一段代码,在视觉上更清晰的布局中隔离应用程序代码的各个方面(RMD 文件中“块”的阴影等),同时仍然允许您进行更复杂、更典型的shiny事情,例如设置观察者、代理或自定义布局。

于 2017-09-28T16:06:54.420 回答
11

我不同意您需要拥有 Shiny Server 才能运行闪亮的应用程序。我只是在我们的服务器上的 5050 端口(防火墙后面)上托管我闪亮的应用程序,任何客户端都可以通过 ip:port 访问该应用程序。我只运行 1 个 RStudio 会话来完成此操作。

如果我通过我们的路由器打开端口转发,这个应用程序也可以通过互联网访问——但出于安全原因,我不允许这样做。

我喜欢 Shiny 提供的自定义网页的灵活性。

ShinyDashboard 很棒,因为它提供了商业外观,而无需自己编写所有的 css 和 html。

Flexdashboard 也很好,因为您可以将它托管在可以处理降价的服务上,而不是通过 iFrame 或其他方式插入应用程序。

于 2017-06-05T15:42:29.233 回答
8
  1. shinydashboard 具有比默认闪亮更好的 UI 元素,但它就像一个现代主题。我认为它不应该被列为其他 2 的竞争对手。
  2. flexdashboard 只是增强的 RMarkdown,使用简单的 UI 排列约定、htmlwidgets 等。你可以在其中使用 Shiny,但它是有限的。
  3. 要使用 Shiny,您需要为 UI 和行为编写更多代码,学习更多与 html、css 相关的东西,尤其是需要一些时间掌握的响应式。最后,您将获得所有的权力和控制权。
于 2018-01-18T03:59:52.980 回答