डेटा स्रोत चुनें (server)
Radio buttons के साथ काम करते समय, कई बार server में radio button के मान को पढ़ते हुए आपको conditional logic (if-else स्टेटमेंट) की ज़रूरत पड़ती है. यह तब आवश्यक होता है जब चुने गए विकल्प के आधार पर अलग-अलग क्रियाएँ चलानी हों, और आगे कैसे बढ़ना है यह तय करने से पहले चुने हुए मान का निरीक्षण करना पड़े.
उदाहरण के लिए, डेटा स्रोत चुनने वाले radio buttons के साथ, चयन पर निर्भर करते हुए अलग-अलग कोड चलेंगे.
आपका अगला कार्य है: यूज़र जिस radio button को चुने, उसके अनुसार word cloud फंक्शन में सही डेटा स्रोत का उपयोग करें.
यह अभ्यास पाठ्यक्रम का हिस्सा है
केस स्टडीज़: R में Shiny के साथ वेब एप्लिकेशन बनाना
अभ्यास निर्देश
data_sourceनाम का एक reactive वैरिएबल परिभाषित करें जो उस डेटा को रखेगा जिसका उपयोग word cloud के लिए किया जाएगा (पंक्ति 28).- यदि "book" विकल्प ("Art of War") चुना गया है, तो
artofwarbook को data source असाइन करें. यदि "own" विकल्प ("Use your own words") चुना गया है, तो textarea के मान को data source असाइन करें. यदि "file" विकल्प ("Upload a file") चुना गया है, तो यूज़र द्वारा अपलोड की गई फ़ाइल से निकले टेक्स्ट को data source असाइन करें (पंक्तियाँ 33 से 36). data_source()reactive वैरिएबल को word cloud फंक्शन केdataआर्ग्युमेंट के रूप में उपयोग करें (पंक्ति 51).
इंटरैक्टिव व्यावहारिक अभ्यास
इस अभ्यास को इस नमूना कोड को पूरा करके आज़माएँ।
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)