İ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ırEgzersiz 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)