Kom igångKom igång gratis

Välj datakälla (server)

När du arbetar med radioknappar behöver du ibland använda villkorslogik (if-else-satser) för att komma åt radioknappens värde på serversidan. Det är nödvändigt när olika åtgärder ska utföras beroende på vilket alternativ som valts, och det valda värdet måste inspekteras innan man bestämmer hur man ska fortsätta.

Med de radioknappar som väljer en datakälla behöver till exempel olika kod köras beroende på vilket alternativ som är valt.

Ditt nästa uppdrag är att använda rätt datakälla i ordmolnsfunktionen, baserat på vilket alternativ användaren väljer via radioknapparna.

Den här övningen är en del av kursen

Fallstudier: Bygg webbapplikationer med Shiny i R

Visa kurs

Övningsinstruktioner

  • Definiera en reaktiv variabel med namnet data_source som ska innehålla de data som används för ordmolnet (rad 28).
  • Om alternativet "book" ("Art of War") är valt, tilldela boken artofwar som datakälla. Om alternativet "own" ("Use your own words") är valt, tilldela textareans värde som datakälla. Om alternativet "file" ("Upload a file") är valt, tilldela texten från en uppladdad fil som datakälla (raderna 33 till 36).
  • Använd den reaktiva variabeln data_source() som argument data i ordmolnsfunktionen (rad 51).

Interaktiv övning med praktiskt arbete

Testa den här övningen genom att slutföra den här exempelkoden.

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)
Redigera och kör kod