R + Shiny哪个锤子?直闪亮,flexdashboard或shinydashboard?

mic*_*str 58 r shiny shinydashboard flexdashboard

冒着使用mods"太宽泛的问题"锤子的风险,我想问一下,鉴于大量的交互式R Shiny工具和软件包的出现,你什么时候使用哪一个?

  1. 闪亮 - 对我来说,只有你的项目需要从闪亮的服务器运行,但似乎是最好的选择.

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

  3. flexdashboard - 在Rmd中写出来.什么让你直接闪亮没有?也许,如果您愿意传递数据,可以通过电子邮件发送给客户吗?我一直在玩,flexdashboard但它无法使用数据表(库(DT))让我觉得它需要更多的迭代.

看看其他答案,我并不是唯一一个问这个问题的人.

创作者在那里提供了很多画廊来展示他们的包裹/进场,但是你怎么知道要走哪条路?

使用一个优于另一个的明显优势是什么?

Ami*_*hli 20

需要做出一个细微差别.交互性不一定需要运行代码的服务器.可以使用嵌入式JavaScript提供交互性,嵌入式JavaScript将在客户端执行(如plotly,highcharts,leaflet等).因此,如果我们不使用"交互性"一词,而是明确地描述交互性,那么您的选择将成为:

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

所以基本上,如果需要任何交互性可以由现有的包(使用htmlwidgets)提供,那么你可以使用flexdashboard而不需要将它部署到任何Shiny服务器.否则,您需要部署到Shiny服务器,您应该使用Shiny或shinydashboard.

  • 如果在flexdasboard中使用闪亮的运行时,则确实需要闪亮的服务器来托管它。 (2认同)

dra*_*doc 8

  1. Shinydashboard 具有比默认的 Shine 更好的 UI 元素,但它就像一个现代主题。我不认为它应该被列为其他 2 的竞争对手。
  2. flexdashboard 只是增强了 RMarkdown,使用简单的 UI 排列约定,htmlwidgets 等。您可以在其中使用 Shiny,但它是有限的。
  3. 要使用 Shiny,你需要为 UI 和行为编写更多代码,学习更多与 html、css 相关的东西,尤其是响应式,需要一些时间来掌握。最后,您将获得所有权力和控制权。


Ale*_*ius 7

我不同意你需要让Shiny Server运行一个闪亮的应用程序.我只是在端口5050(防火墙后面)的服务器上托管我的闪亮应用程序,任何客户端都可以通过ip:port访问应用程序.我只运行了一次RStudio会话来实现这一目标.

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

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

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

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


nat*_*ate 6

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