Zoeken…


Maak een app

Shiny is een R- pakket ontwikkeld door RStudio waarmee webpagina's kunnen worden gemaakt om de resultaten van een analyse interactief weer te geven in R.

Er zijn twee eenvoudige manieren om een Shiny-app te maken:

  • in één .R bestand, of
  • in twee bestanden: ui.R en server.R .

Een Shiny-app bestaat uit twee delen:

  • ui : een gebruikersinterfacescript dat de lay-out en het uiterlijk van de toepassing beheert.
  • server : een serverscript dat code bevat waarmee de toepassing kan reageren.

Een bestand

library(shiny)

# Create the UI
ui <- shinyUI(fluidPage(
    # Application title
    titlePanel("Hello World!")
))

# Create the server function
server <- shinyServer(function(input, output){})

# Run the app
shinyApp(ui = ui, server = server)

Twee bestanden

Maak een ui.R bestand

library(shiny)

# Define UI for application
shinyUI(fluidPage(  
  # Application title
  titlePanel("Hello World!")
))

Maak een server.R bestand

library(shiny)

# Define server logic
shinyServer(function(input, output){})

Radio knop

U kunt een reeks keuzerondjes maken die worden gebruikt om een item uit een lijst te selecteren.

Het is mogelijk om de instellingen te wijzigen:

  • geselecteerd: de aanvankelijk geselecteerde waarde (teken (0) voor geen selectie)
  • inline: horizontaal of verticaal
  • breedte

Het is ook mogelijk om HTML toe te voegen.

library(shiny)

ui <- fluidPage(    
  radioButtons("radio", 
               label = HTML('<FONT color="red"><FONT size="5pt">Welcome</FONT></FONT><br> <b>Your favorite color is red ?</b>'),
               choices = list("TRUE" = 1, "FALSE" = 2),
               selected = 1,
               inline = T,
               width = "100%"),      
  fluidRow(column(3, textOutput("value")))) 


server <- function(input, output){
  output$value <- renderPrint({
    if(input$radio == 1){return('Great !')}
     else{return("Sorry !")}})}

shinyApp(ui = ui, server = server)

voer hier de afbeeldingsbeschrijving in

Selectievakje Groep

Maak een groep selectievakjes die kunnen worden gebruikt om meerdere keuzes onafhankelijk van elkaar te schakelen. De server ontvangt de invoer als een tekenvector van de geselecteerde waarden.

library(shiny)

ui <- fluidPage(    
  checkboxGroupInput("checkGroup1", label = h3("This is a Checkbox group"), 
                 choices = list("1" = 1, "2" = 2, "3" = 3),
                 selected = 1),
  fluidRow(column(3, verbatimTextOutput("text_choice")))
  ) 


server <- function(input, output){
  output$text_choice <- renderPrint({
    return(paste0("You have chosen the choice ",input$checkGroup1))})
} 

shinyApp(ui = ui, server = server)

voer hier de afbeeldingsbeschrijving in

Het is mogelijk om de instellingen te wijzigen:

  • label: titel
  • keuzes: geselecteerde waarden
  • geselecteerd: de aanvankelijk geselecteerde waarde (NULL voor geen selectie)
  • inline: horizontaal of verticaal
  • breedte

Het is ook mogelijk om HTML toe te voegen.

Selecteer vak

Maak een selectielijst die kan worden gebruikt om een of meerdere items uit een zoeklijst te kiezen.

library(shiny)

ui <- fluidPage(    
  selectInput("id_selectInput", 
          label = HTML('<B><FONT size="3">What is your favorite color ?</FONT></B>'), 
          multiple = TRUE,
          choices = list("red" = "red", "green" = "green", "blue" = "blue", "yellow" = "yellow"), 
          selected = NULL),
  br(), br(),
  fluidRow(column(3, textOutput("text_choice")))) 


server <- function(input, output){
  output$text_choice <- renderPrint({
    return(input$id_selectInput)})
}

shinyApp(ui = ui, server = server)

voer hier de afbeeldingsbeschrijving in

Het is mogelijk om de instellingen te wijzigen:

  • label: titel
  • keuzes: geselecteerde waarden
  • geselecteerd: de aanvankelijk geselecteerde waarde (NULL voor geen selectie)
  • meerdere: WAAR of ONWAAR
  • breedte
  • grootte
  • selectize: TRUE of FALSE (voor gebruik of niet selectize.js, verander de weergave)

Het is ook mogelijk om HTML toe te voegen.

Start een glanzende app

U kunt een applicatie op verschillende manieren starten, afhankelijk van hoe u uw app maakt. Als uw app is verdeeld in twee bestanden ui.R en server.R of als al uw app zich in één bestand bevindt.

1. App met twee bestanden

Uw twee bestanden ui.R en server.R moeten zich in dezelfde map bevinden. U kunt uw app vervolgens starten door in de console de shinyApp() -functie uit te voeren en het pad van de map met de Shiny-app door te geven.

shinyApp("path_to_the_folder_containing_the_files")  

U kunt de app ook rechtstreeks vanuit Rstudio starten door op de knop App uitvoeren te drukken die op Rstudio verschijnt wanneer u een ui.R of server.R bestand opent.
ClicktoRun

Of u kunt eenvoudig runApp() op de console schrijven als uw werkmap de Shiny App-map is.

2. Eén bestand-app

Als u uw in één R bestand maakt, kunt u het ook starten met de shinyApp() -functie.

  • binnenkant van uw code:
library(shiny)

ui <- fluidPage() #Create the ui
server <- function(input, output){} #create the server

shinyApp(ui = ui, server = server) #run the App
  • in de console door pad toe te voegen aan een .R bestand dat de Shiny-toepassing met de paramter appFile :
shinyApp(appFile="path_to_my_R_file_containig_the_app")

Beheer widgets

Functie widget
actionButton Actieknop
checkboxGroupInput Een groep selectievakjes
checkboxInput Een enkel selectievakje
dateInput Een kalender om de datum te selecteren
dateRangeInput Een paar kalenders voor het selecteren van een datumbereik
fileInput Een wizard voor het uploaden van bestanden
hulp tekst Help-tekst die aan een invoerformulier kan worden toegevoegd
numericInput Een veld om cijfers in te voeren
Radio knoppen Een aantal keuzerondjes
selectInput Een vak met keuzes om uit te kiezen
sliderInput Een schuifbalk
verzendknop Een verzendknop
tekst invoer Een veld om tekst in te voeren
library(shiny)

# Create the UI
ui <- shinyUI(fluidPage(
  titlePanel("Basic widgets"),
  
  fluidRow(
    
    column(3,
           h3("Buttons"),
           actionButton("action", label = "Action"),
           br(),
           br(), 
           submitButton("Submit")),
    
    column(3,
           h3("Single checkbox"),
           checkboxInput("checkbox", label = "Choice A", value = TRUE)),
    
    column(3, 
           checkboxGroupInput("checkGroup", 
                              label = h3("Checkbox group"), 
                              choices = list("Choice 1" = 1, 
                                             "Choice 2" = 2, "Choice 3" = 3),
                              selected = 1)),
    
    column(3, 
           dateInput("date", 
                     label = h3("Date input"), 
                     value = "2014-01-01"))   
  ),
  
  fluidRow(
    
    column(3,
           dateRangeInput("dates", label = h3("Date range"))),
    
    column(3,
           fileInput("file", label = h3("File input"))),
    
    column(3, 
           h3("Help text"),
           helpText("Note: help text isn't a true widget,", 
                    "but it provides an easy way to add text to",
                    "accompany other widgets.")),
    
    column(3, 
           numericInput("num", 
                        label = h3("Numeric input"), 
                        value = 1))   
  ),
  
  fluidRow(
    
    column(3,
           radioButtons("radio", label = h3("Radio buttons"),
                        choices = list("Choice 1" = 1, "Choice 2" = 2,
                                       "Choice 3" = 3),selected = 1)),
    
    column(3,
           selectInput("select", label = h3("Select box"), 
                       choices = list("Choice 1" = 1, "Choice 2" = 2,
                                      "Choice 3" = 3), selected = 1)),
    
    column(3, 
           sliderInput("slider1", label = h3("Sliders"),
                       min = 0, max = 100, value = 50),
           sliderInput("slider2", "",
                       min = 0, max = 100, value = c(25, 75))
    ),
    
    column(3, 
           textInput("text", label = h3("Text input"), 
                     value = "Enter text..."))   
  )
  
))

# Create the server function
server <- shinyServer(function(input, output){})

# Run the app
shinyApp(ui = ui, server = server)

Debugging

debug() en debugonce() werken niet goed in de context van de meeste Shiny-foutopsporing. browser() -instructies die op kritieke plaatsen zijn ingevoegd, kunnen u echter veel inzicht geven in hoe uw Shiny-code (niet) werkt. Zie ook: Foutopsporing met browser()

Showcase-modus

In de Showcase-modus wordt uw app weergegeven naast de code die deze genereert en worden coderegels in de server gemarkeerd. R terwijl deze wordt uitgevoerd.

Er zijn twee manieren om de Showcase-modus in te schakelen:

  • Start de Shiny-app met het argument display.mode = "showcase", bijvoorbeeld runApp("MyApp", display.mode = "showcase") .
  • Maak een bestand met de naam DESCRIPTION in uw Shiny-appmap en voeg deze regel toe: DisplayMode: Showcase .

Reactive Log Visualizer

Reactive Log Visualizer biedt een interactieve, op een browser gebaseerde tool voor het visualiseren van reactieve afhankelijkheden en uitvoering in uw applicatie. Om Reactive Log Visualizer in te schakelen, voert u options(shiny.reactlog=TRUE) in de R-console en of voegt u die coderegel toe aan uw server.R-bestand. Om Reactive Log Visualizer te starten, drukt u op Ctrl + F3 op Windows of Command + F3 op Mac wanneer uw app actief is. Gebruik de linker en rechter pijltjestoetsen om te navigeren in Reactive Log Visualizer.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow