2016-06-23 23 views
33

A rischio di essere colpito con uno mods "too broad a question" hammer, voglio chiedere data la pletora di strumenti interattivi R Shiny e pacchetti emergenti, quando si usa quale?R + Lucido quale martello? dritto lucido, flexdashboard o shinydashboard?

  1. Shiny - per me unico inconveniente il progetto ha bisogno di correre da server di lucido, ma sembra la scelta migliore.

  2. shinydashboard - Lucido ma ha un buon valore per i callout.

  3. flexdashboard - scrivilo in Rmd. Cosa ti guadagna in modo che Shiny non lo sia? Forse, utile per inviare email a un cliente a patto che tu sia felice di passare i dati? Ho giocato con flexdashboard ma la sua incapacità di lavorare con datatable (library (DT)) mi fa sentire che necessita di qualche altra iterazione.

Guardando altre risposte, non sono solo in asking this question.

I creatori stanno fornendo molte gallerie là fuori per mostrare i loro pacchetti/approccio, ma come fai a sapere qual è il percorso da seguire?

Quali sono i chiari vantaggi dell'utilizzo di uno sull'altro?

+0

Qual è il tuo input e l'output previsto? Sto solo scherzando. Questa è una domanda utile e, si spera, genererà alcune buone risposte. – cory

+5

Bene @cory Ho già un downvote in modo che il martello scimmia funzioni. Vorrei che SO si preoccupasse di diradare le duplicate domande dei compiti degli studenti, di argomenti come questo in cui i guru possono condividere le loro esperienze ... – micstr

+1

Credo che sia necessario Shiny Server per tutte le opzioni qui, se si desidera distribuire l'app su un server (non solo all'interno di RStudio). –

risposta

13

C'è una sfumatura che deve essere fatta. L'interattività non richiede necessariamente un server dietro al codice in esecuzione. L'interattività può essere fornita utilizzando JavaScript incorporato, che dovrebbe essere eseguito sul lato client (come grafici, diagrammi elevati, volantini, ecc.). Quindi, se non usiamo la parola "interattività", ma descriviamo l'interattività in modo esplicito, quindi le opzioni diventano:

  • Shiny: Needs un server dietro di esso per eseguire codice R all'input dell'utente. Può implementare qualsiasi layout. Può eseguire codice interattivo elaborando serveride (in R) o clientide (in JavaScript incorporato).
  • shinydashboard: Richiede un server dietro di esso per eseguire il codice R sull'input dell'utente. Può implementare un layout di dashboard. Contiene alcuni widget specifici progettati per funzionare in un layout dashboard. Può eseguire codice interattivo elaborando serveride (in R) o clientide (in JavaScript incorporato).
  • flexdashboard: solo un documento simile a un dashboard. Contiene anche alcuni widget specifici progettati per funzionare in un layout dashboard. È possibile eseguire solo client code di codice interattivo (in JavaScript incorporato).

Quindi, fondamentalmente, se tutto ciò che è richiesto l'interattività può essere offerto da un pacchetto esistente (che utilizza htmlwidgets), allora si può solo usare flexdashboard e che non è necessario per distribuirlo a qualsiasi server lucido. Altrimenti, è necessario eseguire la distribuzione su un server Shiny e si dovrebbe usare Shiny o shinydashboard.

+0

Se si utilizza il runtime lucido in flexdasboard, è necessario un server lucido per ospitarlo. – MySchizoBuddy

4

Non sono d'accordo sul fatto che sia necessario disporre di Shiny Server per eseguire un'app lucida. Ho semplicemente ospitato la mia app lucida sul nostro server alla porta 5050 (dietro il firewall) e qualsiasi client può accedere all'app tramite ip: port. Sto eseguendo solo 1 sessione di RStudio per realizzare questo.

Se dovessi attivare il port forwarding tramite il nostro router, questa app sarebbe accessibile anche via Internet, ma per motivi di sicurezza non lo permetto.

Mi piace la flessibilità offerta da Shiny per personalizzare la pagina web.

ShinyDashboard è ottimo in quanto fornisce un aspetto commerciale senza dover scrivere tutto il css e html da soli.

Flexdashboard è anche bello in quanto è possibile che lo stiate ospitando su un servizio in grado di gestire il markdown piuttosto che inserire l'app tramite un iFrame o qualcos'altro.

2

Mi piace mettere moduli lucidi all'interno di un flexdashboard. Finché inserisci runtime: shiny nella sezione di intestazione YAML, l'utilizzo di moduli lucidi dovrebbe essere relativamente semplice. Per parente, intendo, prendi un giorno e leggi tutti gli esempi di RStudio, quindi prova a fare lo stesso con il tuo codice. Una volta superata la curva di apprendimento, i moduli in flexdashboard rendono lo sviluppo futuro molto più snello, mentalmente facile e, secondo la mia esperienza, mi offrono l'opportunità di concentrarmi veramente sulle domande basate sui dati che mi sono state poste. Penso che flexdashboards + shiny modules sia il meglio di entrambi i mondi: flexdash per suddividere alcuni elementi del layout, aggiungere o rimuovere facilmente una sezione di codice, isolare vari aspetti del codice dell'applicazione in un layout visivamente più distinto (l'ombreggiatura di "blocchi" in un file RMD, ecc.), mentre continui a permetterti di entrare in cose più complesse, in primis shiny come impostare osservatori, proxy o layout personalizzati.

1
  1. shinydashboard presenta elementi dell'interfaccia utente migliori rispetto al valore predefinito, ma è proprio come un tema moderno. Non penso che dovrebbe essere elencato come concorrente ad altri 2.
  2. flexdashboard è appena migliorato RMarkdown, usando una semplice convenzione per la disposizione dell'interfaccia utente, htmlwidgets ecc. Puoi usare Shiny ma è limitato.
  3. Per utilizzare Shiny è necessario scrivere più codice per l'interfaccia utente e il comportamento, acquisire ulteriori informazioni relative a html, css, in particolare reattive che richiedono un po 'di tempo per essere afferrate. Alla fine avrai tutta la potenza e i controlli.