İ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, kursun bir parçasıdır
Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme
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ı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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)