R Language
Glimmend
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
enserver.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)
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)
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)
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.
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 paramterappFile
:
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.