shinyAan de slag met glanzend


Opmerkingen

Deze sectie geeft een overzicht van wat glimmend is en waarom een ontwikkelaar het misschien wil gebruiken.

Het moet ook alle grote onderwerpen binnen glanzend vermelden en een link naar de gerelateerde onderwerpen bevatten. Aangezien de Documentatie voor Shiny nieuw is, moet u mogelijk eerste versies van die gerelateerde onderwerpen maken.

Inclusief percelen

De eenvoudigste manier om plots in uw shinyApp op te nemen, is door plotOutput in de ui en renderPlot in de server te gebruiken. Dit werkt zowel met ggPlot als met ggPlot s

library(shiny)
library(ggplot2)

ui <- fluidPage(
  plotOutput('myPlot'),
  plotOutput('myGgPlot')
)

server <- function(input, output, session){
  output$myPlot = renderPlot({
    hist(rnorm(1000))
  })
  output$myGgPlot <- renderPlot({
    ggplot(iris, aes(Sepal.Length, Sepal.Width, color = Species)) + geom_point()
  })
}

shinyApp(ui, server)
 

Inclusief tafels

Tabellen worden het gemakkelijkst opgenomen in het DT-pakket , dat een R-interface is naar de JavaScript-gegevensdatabellen.

library(shiny)
library(DT)

ui <- fluidPage(
  dataTableOutput('myTable')
)

server <- function(input, output, session){
  output$myTable <- renderDataTable({
    datatable(iris)
  })
}

shinyApp(ui, server)
 

Installatie of instellingen

Shiny kan worden uitgevoerd als een zelfstandige toepassing op uw lokale computer, op een server die glanzende apps kan bieden aan meerdere gebruikers (met behulp van een glanzende server) of op shinyapps.io .

  1. Shiny op een lokale computer installeren: voer in R / RStudio install.packages("shiny") als u installeert vanuit CRAN of devtools::install_github("rstudio/shiny") als u installeert vanuit de RStudio Github-repository. De Github-repository host een ontwikkelingsversie van Shiny die mogelijk meer functies kan hebben in vergelijking met de CRAN-versie, maar deze kan ook instabiel zijn.

Eenvoudige app

Elke shiny app bestaat uit twee delen: een gebruikersinterfacedefinitie ( UI ) en een serverscript ( server ). Dit voorbeeld laat zien hoe u "Hallo wereld" kunt afdrukken vanuit de gebruikersinterface of de server.

UI.R

In de gebruikersinterface kunt u enkele weergaveobjecten plaatsen (div, ingangen, knoppen, enz.).

library(shiny)

# Define UI for application print "Hello world" 
shinyUI(

  # Create bootstrap page 
  fluidPage(
    
    # Paragraph "Hello world"
    p("Hello world"),

    # Create button to print "Hello world" from server
    actionButton(inputId = "Print_Hello", label = "Print_Hello World"),

    # Create position for server side text
    textOutput("Server_Hello")
    
  )
)
 

Server.R

In het serverscript kunt u methoden definiëren die gegevens manipuleren of naar acties luisteren.

# Define server logic required to print "Hello World" when button is clicked
shinyServer(function(input, output) {
  
  # Create action when actionButton is clicked
  observeEvent(input$Print_Hello,{

    # Change text of Server_Hello
    output$Server_Hello = renderText("Hello world from server side")
  })
  
  
})
 

Hoe rennen?

U kunt uw app op verschillende manieren uitvoeren:

  1. Maak twee verschillende bestanden en plaats ze in één map en gebruik vervolgens runApp('your dir path')
  2. U kunt twee variabelen definiëren (ui en server bijvoorbeeld) en vervolgens shinyApp(ui,server) gebruiken om uw app uit te voeren

Resultaat

In dit voorbeeld ziet u wat tekst en een knop:

screenshot voor klik

En na het klikken op de knop antwoordt de server:

screenshot na klik

Wanneer zou ik glanzend gebruiken?

  1. Ik heb wat data-analyse gedaan op sommige data en heb veel 'niet-coderende' mensen in het team, die vergelijkbare data hebben als de mijne, en vergelijkbare analyse-eisen hebben. In dergelijke gevallen kan ik een webapplicatie met glimmende bouwen, die gebruikersspecifieke invoergegevensbestanden opneemt en analyses genereren.
  2. Ik moet geanalyseerde gegevens of relevante plots met anderen in het team delen. Glanzende web-apps kunnen in dergelijke situaties nuttig zijn.
  3. Ik heb geen ervaring met het programmeren van webtoepassingen, maar moet snel een eenvoudige interface samenstellen. Glanzend om te redden met eenvoudige gebruikersinterface en serverelementen en minimale codering.
  4. Met interactieve elementen kunnen uw gebruikers onderzoeken welk element van de gegevens voor hen relevant is. U kunt bijvoorbeeld gegevens voor het hele bedrijf hebben geladen, maar een vervolgkeuzelijst per afdeling zoals "Verkoop", "Productie", "Financiën" die de gegevens kunnen samenvatten zoals de gebruikers ze willen bekijken. Het alternatief zou een enorm rapportpakket met analyses voor elke afdeling produceren, maar ze lezen alleen hun hoofdstuk en het totaal.