Suche…


App erstellen

Shiny ist ein von RStudio entwickeltes R- Paket, mit dem Webseiten erstellt werden können, um die Ergebnisse einer Analyse in R interaktiv anzuzeigen.

Es gibt zwei einfache Möglichkeiten, eine Shiny-App zu erstellen:

  • in einer .R Datei oder
  • in zwei Dateien: ui.R und server.R .

Eine Shiny-App besteht aus zwei Teilen:

  • ui : Ein Benutzeroberflächenskript, das das Layout und das Erscheinungsbild der Anwendung steuert.
  • Server : Ein Serverskript, das Code enthält, damit die Anwendung reagieren kann.

Eine Datei

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)

Zwei Dateien

Erstellen Sie die ui.R Datei

library(shiny)

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

Erstellen Sie die server.R Datei

library(shiny)

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

Radio knopf

Sie können eine Reihe von Optionsschaltflächen erstellen, die zum Auswählen eines Elements aus einer Liste verwendet werden.

Es ist möglich, die Einstellungen zu ändern:

  • ausgewählt: Der ursprünglich ausgewählte Wert (Zeichen (0) für keine Auswahl)
  • Inline: horizontal oder vertikal
  • Breite

Es ist auch möglich, HTML hinzuzufügen.

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)

Geben Sie hier die Bildbeschreibung ein

Kontrollkästchen Gruppe

Erstellen Sie eine Gruppe von Kontrollkästchen, mit denen Sie mehrere Optionen unabhängig voneinander umschalten können. Der Server empfängt die Eingabe als Zeichenvektor der ausgewählten Werte.

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)

Geben Sie hier die Bildbeschreibung ein

Es ist möglich, die Einstellungen zu ändern:

  • Label: Titel
  • Auswahlmöglichkeiten: ausgewählte Werte
  • ausgewählt: Der ursprünglich ausgewählte Wert (NULL für keine Auswahl)
  • Inline: horizontal oder vertikal
  • Breite

Es ist auch möglich, HTML hinzuzufügen.

Kästchen auswählen

Erstellen Sie eine Auswahlliste, mit der ein einzelnes oder mehrere Elemente aus einer Werteliste ausgewählt werden können.

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)

Geben Sie hier die Bildbeschreibung ein

Es ist möglich, die Einstellungen zu ändern:

  • Label: Titel
  • Auswahlmöglichkeiten: ausgewählte Werte
  • ausgewählt: Der ursprünglich ausgewählte Wert (NULL für keine Auswahl)
  • mehrere: TRUE oder FALSE
  • Breite
  • Größe
  • selectize: TRUE oder FALSE (für selectize.js verwenden oder nicht, Anzeige ändern)

Es ist auch möglich, HTML hinzuzufügen.

Starten Sie eine Shiny-App

Sie können eine Anwendung auf verschiedene Arten starten, je nachdem, wie Sie Ihre App erstellen. Wenn Ihre App in zwei Dateien aufgeteilt ist, ui.R und server.R oder wenn sich Ihre gesamte App in einer Datei befindet.

1. Zwei Dateien App

Ihre beiden Dateien ui.R und server.R müssen sich im selben Ordner befinden. Sie können Ihre App dann starten, indem Sie in der Konsole die shinyApp() Funktion shinyApp() und den Pfad des Verzeichnisses übergeben, in dem sich die Shiny-App befindet.

shinyApp("path_to_the_folder_containing_the_files")  

Sie können die App auch direkt von Rstudio aus starten, indem Sie auf die Schaltfläche App ui.R server.R , die beim Öffnen einer ui.R oder server.R Datei in ui.R server.R wird.
ClicktoRun

Oder Sie können runApp() einfach in die Konsole schreiben, wenn das Shiny App-Verzeichnis Ihr Arbeitsverzeichnis ist.

2. Eine Datei App

Wenn Sie Ihre in einer R Datei erstellen, können Sie sie auch mit der shinyApp() Funktion starten.

  • innerhalb Ihres Codes:
library(shiny)

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

shinyApp(ui = ui, server = server) #run the App
  • in der Konsole durch Hinzufügen eines Pfads zu einer .R Datei, die die Shiny-Anwendung enthält, mit dem Parameter appFile :
shinyApp(appFile="path_to_my_R_file_containig_the_app")

Kontrollieren Sie Widgets

Funktion Widget
Aktionsknopf Aktionsknopf
checkboxGroupInput Eine Gruppe von Kontrollkästchen
checkboxInput Ein einzelnes Kontrollkästchen
dateInput Ein Kalender zur Auswahl des Datums
dateRangeInput Ein Kalender zum Auswählen eines Datumsbereichs
fileInput Ein Assistent zum Hochladen von Dateien
Hilfstext Hilfetext, der einem Eingabeformular hinzugefügt werden kann
numerischerEingang Ein Feld zur Eingabe von Zahlen
Radio Knöpfe Eine Reihe von Optionsfeldern
selectEingabe Eine Box mit Auswahlmöglichkeiten
sliderInput Eine Schiebereglerleiste
submitButton Ein Senden-Button
Text Eingabe Ein Feld zur Eingabe von Text
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)

Debuggen

debug() und debugonce() funktionieren im Zusammenhang mit den meisten Shiny-Debuggen nicht gut. browser() Anweisungen, die an kritischen Stellen eingefügt werden, können jedoch einen Einblick in die Funktionsweise Ihres Shiny-Codes (nicht) geben. Siehe auch: Debuggen mit dem browser()

Showcase-Modus

Der Showcase-Modus zeigt Ihre App neben dem Code an, der sie generiert, und markiert die Codezeilen in server.R, während sie ausgeführt werden.

Es gibt zwei Möglichkeiten, den Showcase-Modus zu aktivieren:

  • Starten Sie die Shiny-App mit dem Argument display.mode = "showcase", z. B. runApp("MyApp", display.mode = "showcase") .
  • Erstellen Sie eine Datei mit dem Namen DESCRIPTION in Ihrem Shiny-App-Ordner und fügen Sie diese Zeile hinzu: DisplayMode: Showcase .

Reactive Log Visualizer

Reactive Log Visualizer bietet ein interaktives browserbasiertes Tool zur Darstellung reaktiver Abhängigkeiten und der Ausführung in Ihrer Anwendung. Um Reactive Log Visualizer zu aktivieren, führen Sie die options(shiny.reactlog=TRUE) in der R-Konsole aus oder fügen Sie diese Codezeile in Ihre server.R-Datei ein. Um den Reactive Log Visualizer zu starten, drücken Sie bei laufender App Strg + F3 unter Windows bzw. Befehl + F3 bei Mac. Verwenden Sie die linken und rechten Pfeiltasten, um im Reactive Log Visualizer zu navigieren.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow