Veri kaynağını seç (server)
Radyo düğmeleriyle çalışırken, sunucuda radyo düğmesinin değerine erişirken bazen koşullu mantık (if-else ifadeleri) kullanman gerekir. Bu, seçime göre farklı işlemler yapılacağı durumlarda ve nasıl ilerleyeceğine karar vermeden önce seçilen değerin incelenmesi gerektiğinde zorunludur.
Örneğin, veri kaynağını seçen radyo düğmelerinde, hangi seçeneğin işaretlendiğine bağlı olarak farklı kodların çalışması gerekir.
Sıradaki görevin, kullanıcının seçtiği radyo düğmesine göre uygun veri kaynağını kelime bulutu fonksiyonunda kullanmak.
Bu egzersiz
Vaka Çalışmaları: R ile Shiny Kullanarak Web Uygulamaları Geliştirme
kursunun bir parçasıdırEgzersiz talimatları
- Kelime bulutunda kullanılacak veriyi tutmak için
data_sourceadlı bir tepkisel değişken tanımla (satır 28). - "book" seçeneği ("Art of War") seçilirse veri kaynağı olarak
artofwarkitabını ata. "own" seçeneği ("Kendi kelimelerini kullan") seçilirse veri kaynağı olarak metin alanının değerini ata. "file" seçeneği ("Bir dosya yükle") seçilirse kullanıcı tarafından yüklenen dosyadaki metni veri kaynağı olarak ata (satırlar 33–36). dataargümanı olarak kelime bulutu fonksiyonunadata_source()tepkisel değişkenini ver (satır 51).
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"
)
),
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)