BaşlayınÜcretsiz Başlayın

İstendiğinde yeni bir kelime bulutu oluştur

Kelime bulutu oluşturma kodunu çok sık güncellenmeyecek şekilde izole ettikten sonra, son adım kullanıcı istediğinde kelime bulutunu oluşturmaya bir yol sağlamaktır. Bu, bir actionButton() yardımıyla yapılabilir.

Bu egzersiz

Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

Görevin, Shiny uygulamasına bir düğme eklemek ve düğmeye basıldığında kelime bulutunu yeniden oluşturmaktır. Özellikle:

  • Girdi kimliği "draw" ve etiketi "Draw!" olan bir action button ekle (satır 26).
  • Düğmeyi kelime bulutu oluşturma fonksiyonunda bir bağımlılık olarak ekle ki düğmeye basıldığında kelime bulutu yeniden çalışsın (satır 56).

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

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"
        )
      ),
      conditionalPanel(
        condition = "input.source == 'own'",
        textAreaInput("text", "Enter text", rows = 7)
      ),
      conditionalPanel(
        condition = "input.source == 'file'",
        fileInput("file", "Select a file")
      ),
      numericInput("num", "Maximum number of words",
                   value = 100, min = 5),
      colourInput("col", "Background color", value = "white"),
      # Add a "draw" button to the app
      ___(inputId = ___, label = ___)
    ),
    mainPanel(
      wordcloud2Output("cloud")
    )
  )
)

server <- function(input, output) {
  data_source <- reactive({
    if (input$source == "book") {
      data <- artofwar
    } else if (input$source == "own") {
      data <- input$text
    } else if (input$source == "file") {
      data <- input_file()
    }
    return(data)
  })
  
  input_file <- reactive({
    if (is.null(input$file)) {
      return("")
    }
    readLines(input$file$datapath)
  })
  
  output$cloud <- renderWordcloud2({
    # Add the draw button as a dependency to
    # cause the word cloud to re-render on click
    input$___
    isolate({
      create_wordcloud(data_source(), num_words = input$num,
                       background = input$col)
    })
  })
}

shinyApp(ui = ui, server = server)
Kodu Düzenle ve Çalıştır