LoslegenKostenlos loslegen

Wähle die Datenquelle (Server)

Wenn du mit Radio-Schaltflächen arbeitest, brauchst du im Server-Teil manchmal bedingte Logik (if-else-Anweisungen), um auf den Wert der Radio-Schaltfläche zuzugreifen. Das ist nötig, wenn je nach Auswahl unterschiedliche Aktionen ausgeführt werden und der gewählte Wert geprüft werden muss, bevor es weitergeht.

Bei den Radio-Schaltflächen zur Auswahl der Datenquelle soll zum Beispiel je nach Auswahl anderer Code laufen.

Deine nächste Aufgabe ist, je nach Radio-Auswahl die passende Datenquelle in der Wortwolkenfunktion zu verwenden.

Diese Übung ist Teil des Kurses

Fallstudien: Webanwendungen mit Shiny in R erstellen

Kurs anzeigen

Anleitung zur Übung

  • Definiere eine reaktive Variable namens data_source, die die Daten hält, die für die Wortwolke verwendet werden (Zeile 28).
  • Wenn die Option „book“ („Art of War“) ausgewählt ist, weise das Buch artofwar als Datenquelle zu. Wenn die Option „own“ („Use your own words“) ausgewählt ist, weise den Wert des Textbereichs als Datenquelle zu. Wenn die Option „file“ („Upload a file“) ausgewählt ist, weise den Text aus einer vom Nutzer hochgeladenen Datei als Datenquelle zu (Zeilen 33 bis 36).
  • Verwende die reaktive Variable data_source() als data-Argument für die Wortwolkenfunktion (Zeile 51).

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

ui <- fluidPage(
  h1("Word Cloud"),
  sidebarLayout(
    sidebarPanel(
      radioButtons(
        inputId = "source",
        label = "Word source",
        choices = c(
          "Art of War" = "book",
          "Use your own words" = "own",
          "Upload a file" = "file"
        )
      ),
      textAreaInput("text", "Enter text", rows = 7),
      fileInput("file", "Select a file"),
      numericInput("num", "Maximum number of words",
                   value = 100, min = 5),
      colourInput("col", "Background color", value = "white")
    ),
    mainPanel(
      wordcloud2Output("cloud")
    )
  )
)

server <- function(input, output) {
  # Create a "data_source" reactive variable
  data_source <- ___({
    # Return the appropriate data source depending on
    # the chosen radio button
    if (input$source == "book") {
      data <- artofwar
    } else if (input$source == ___) {
      data <- input$___
    } else if (___ == "file") {
      data <- input_file()
    }
    return(data)
  })

  input_file <- reactive({
    if (is.null(input$file)) {
      return("")
    }
    readLines(input$file$datapath)
  })

  output$cloud <- renderWordcloud2({
    # Use the data_source reactive variable as the data
    # in the word cloud function
    create_wordcloud(data = ___(), num_words = input$num,
                     background = input$col)
  })
}

shinyApp(ui = ui, server = server)
Code bearbeiten und ausführen