59 votes

R + Shiny quel marteau ? Shiny droit, flexdashboard ou shinydashboard ?

Au risque d'être frappé par un mods "question trop générale" marteau Je veux demander, étant donné la pléthore d'outils interactifs R Shiny Les outils et paquets qui émergent, quand utilisez-vous lequel ?

  1. Brillant - Pour moi, le seul inconvénient est que votre projet doit être exécuté à partir d'un serveur brillant, mais cela semble être le meilleur choix.

  2. shinydashboard - Brillant mais avec de jolies boîtes de valeur pour les callouts.

  3. flexdashboard - l'inscrire dans le Rmd. Qu'est-ce que cela vous apporte de plus que le simple Shiny ? Peut-être, utile pour envoyer un courriel à un client, à condition que vous soyez heureux de transmettre des données ? Je me suis amusé avec flexdashboard mais son incapacité à travailler avec les tables de données (library(DT)) me donne l'impression qu'il a besoin de quelques itérations supplémentaires.

En regardant les autres réponses, je ne suis pas le seul à en posant cette question .

Les créateurs proposent de nombreuses galeries pour présenter leurs offres/approches, mais comment savoir sur quel chemin s'engager ?

Quels sont les avantages évidents à utiliser l'un plutôt que l'autre ?

20voto

Amit Kohli Points 1463

Il y a une nuance qu'il faut faire. L'interactivité ne nécessite pas nécessairement un serveur derrière lui qui exécute du code. L'interactivité peut être fournie à l'aide de JavaScript intégré, qui s'exécute du côté client (comme plotly, highcharts, leaflet, etc.). Donc, si nous n'utilisons pas le mot "interactivité", mais que nous décrivons l'interactivité de manière explicite, vos options sont les suivantes :

  • Brillant : Nécessite un serveur derrière lui pour exécuter le code R sur l'entrée de l'utilisateur. Peut mettre en œuvre n'importe quelle mise en page. Peut exécuter du code interactif soit en traitant le serveur (en R) ou le client (en JavaScript intégré).
  • shinydashboard Nécessite un serveur derrière lui pour exécuter le code R sur l'entrée de l'utilisateur. Peut mettre en œuvre une mise en page de tableau de bord. Contient quelques widgets spécifiques conçus pour fonctionner dans une disposition de tableau de bord. Peut exécuter du code interactif soit en traitant côté serveur (en R) ou côté client (en JavaScript intégré).
  • flexdashboard : Juste un document qui ressemble à un tableau de bord. Il contient également quelques widgets spécifiques conçus pour fonctionner dans une mise en page de tableau de bord. Peut uniquement exécuter du code interactif côté client (dans le JavaScript intégré).

Donc, en gros, si l'interactivité requise peut être offerte par un paquet existant (qui utilise htmlwidgets), alors vous pouvez simplement utiliser flexdashboard et vous n'avez pas besoin de le déployer sur un serveur Shiny. Sinon, vous avez besoin de le déployer sur un serveur Shiny et vous devriez utiliser soit Shiny, soit shinydashboard.

7voto

Alex Dometrius Points 512

Je ne suis pas d'accord sur le fait qu'il faille avoir Shiny Server pour faire tourner une application shiny. J'héberge simplement mon application Shiny sur notre serveur au port 5050 (derrière un pare-feu) et n'importe quel client peut accéder à l'application via ip:port. Je n'exécute qu'une seule session de RStudio pour accomplir ceci.

Si je devais activer le transfert de port via notre routeur, cette application serait également accessible sur Internet, mais pour des raisons de sécurité, je ne l'autorise pas.

J'aime la flexibilité qu'offre Shiny pour personnaliser la page web.

ShinyDashboard est génial en ce sens qu'il offre une apparence commerciale sans avoir à écrire vous-même tous les css et html.

Flexdashboard est également intéressant dans la mesure où vous pouvez l'héberger sur un service capable de gérer le format markdown plutôt que d'insérer l'application via un iFrame ou autre.

6voto

nate Points 380

J'aime mettre des modules brillants à l'intérieur d'un flexdashboard. Tant que vous mettez runtime: shiny dans votre YAML l'utilisation des modules shiny devrait être relativement simple. Par relativement, je veux dire, prenez une journée et lisez tous les exemples de RStudio, puis essayez de faire la même chose avec votre code. Une fois que vous avez surmonté la courbe d'apprentissage, les modules dans les tableaux de bord flexibles rendent le développement futur beaucoup plus rationnel, facile mentalement, et dans mon expérience, me donnent l'opportunité de vraiment me concentrer sur les questions sous-jacentes basées sur les données que l'on m'a demandé de traiter. Je pense que flexdashboards + shiny modules est le meilleur des deux mondes : flexdash pour briser certains éléments de la mise en page, ajouter ou supprimer facilement une section de code, isoler divers aspects du code de votre application dans une mise en page plus distincte visuellement (l'ombrage des "chunks" dans un fichier RMD, etc. shiny des choses comme la mise en place d'observateurs, de proxies ou de mises en page personnalisées.

5voto

dracodoc Points 1234
  1. shinydashboard possède de meilleurs éléments d'interface utilisateur que le shiny par défaut, mais il s'agit tout simplement d'un thème moderne. Je ne pense pas qu'il devrait être listé comme concurrent des 2 autres.
  2. flexdashboard est juste un RMarkdown amélioré, utilisant une convention simple pour l'arrangement de l'interface utilisateur, les htmlwidgets, etc. Vous pouvez utiliser Shiny dans ce tableau mais c'est limité.
  3. Pour utiliser Shiny, vous devrez écrire plus de code pour l'interface utilisateur et le comportement, apprendre plus de choses liées au html, au css, et surtout au réactif, ce qui demande un certain temps pour être compris. Au final, vous bénéficiez de toute la puissance et des contrôles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X