web-dev-qa-db-fra.com

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

Au risque de se faire frapper par un marteau mods "too wide a question" , je veux demander étant donné la pléthore d'outils et de packages interactifs R Shiny émergents, quand utilisez-vous qui une?

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

  2. shinydashboard - Brillant mais a des cases Nice Value pour les légendes.

  3. flexdashboard - écrivez-le dans Rmd. Qu'est-ce que cela vous apporte que Shiny Straight ne fait pas? Peut-être, utile d'envoyer un e-mail à un client à condition que vous soyez heureux de transmettre des données? J'ai joué avec flexdashboard mais son incapacité à travailler avec datatable (bibliothèque (DT)) me donne l'impression qu'il a besoin de quelques itérations supplémentaires.

En regardant d'autres réponses, je ne suis pas seul à poser cette question .

Les créateurs fournissent de nombreuses galeries pour présenter leurs packages/approche, mais comment savez-vous quel chemin suivre?

Quels sont les avantages évidents d'utiliser l'un par rapport à l'autre?

54
micstr

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

  • brillant: nécessite un serveur derrière lui pour exécuter le code R sur l'entrée utilisateur. Peut implémenter n'importe quelle mise en page. Peut exécuter du code interactif en traitant côté serveur (dans R) ou côté client (en JavaScript intégré).
  • shinydashboard: a besoin d'un serveur derrière lui pour exécuter le code R sur l'entrée utilisateur. Peut implémenter une disposition de tableau de bord. Contient des widgets spécifiques conçus pour fonctionner dans une disposition de tableau de bord. Peut exécuter du code interactif en traitant côté serveur (dans R) ou côté client (en JavaScript intégré).
  • flexdashboard: juste un document qui ressemble à un tableau de bord. Contient également des widgets spécifiques conçus pour fonctionner dans une disposition de tableau de bord. Peut uniquement exécuter du code interactif côté client (en JavaScript intégré).

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

20
Amit Kohli

Je n'accepte pas que vous ayez besoin de Shiny Server pour exécuter une application brillante. J'héberge simplement mon application brillante sur notre serveur au port 5050 (derrière le pare-feu) et tout client peut accéder à l'application via ip: port. Je n'exécute qu'une seule session de RStudio pour y parvenir.

Si je devais activer la redirection 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é que Shiny offre pour personnaliser la page Web.

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

Flexdashboard est également agréable en ce sens que vous pouvez l'héberger sur un service qui peut gérer le démarque plutôt que d'insérer l'application via un iFrame ou autre chose.

6
Alex Dometrius

J'aime mettre des modules brillants à l'intérieur d'un tableau de bord flexible. Tant que vous mettez runtime: shiny dans votre section d'en-tête YAML, l'utilisation de modules brillants devrait être relativement simple. Par parent, je veux dire, prenez une journée et relisez tous les exemples de RStudio, puis essayez de faire de même avec votre code. Une fois que vous avez dépassé la courbe d'apprentissage, les modules des tableaux de bord flexibles rendent le développement futur beaucoup plus rationalisé, mentalement facile et, d'après mon expérience, me permettent de me concentrer vraiment sur les questions sous-jacentes basées sur les données que l'on m'a demandé de traiter. Je pense flexdashboards + shiny modules est le meilleur des deux mondes: flexdash pour décomposer certains des éléments de mise en page, ajouter ou supprimer facilement une section de code, isoler divers aspects de votre code d'application dans une mise en page plus distincte visuellement (l'ombrage des "morceaux" dans un Fichier RMD, etc.), tout en vous permettant d'accéder à des choses plus complexes, essentiellement shiny, comme la configuration d'observateurs, de proxys ou de dispositions personnalisées.

5
nate
  1. shinydashboard a de meilleurs éléments d'interface utilisateur que brillant par défaut, mais c'est comme un thème moderne. Je ne pense pas qu'il devrait être répertorié comme concurrent aux autres 2.
  2. flexdashboard est simplement amélioré RMarkdown, utilisant une convention simple pour l'arrangement de l'interface utilisateur, les htmlwidgets, etc. Vous pouvez utiliser Shiny 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, css, en particulier réactif qui ont besoin d'un certain temps pour comprendre. En fin de compte, vous obtenez toute la puissance et les commandes.
4
dracodoc