Choisir la source de données (serveur)
Avec des boutons radio, vous devez parfois utiliser une logique conditionnelle (instructions if-else) lorsque vous récupérez la valeur côté serveur. C’est nécessaire lorsque différentes actions doivent être réalisées selon l’option choisie, et que la valeur sélectionnée doit être examinée avant de décider comment procéder.
Par exemple, avec des boutons radio qui sélectionnent une source de données, un code différent doit s’exécuter selon l’option choisie.
Votre prochaine tâche consiste à utiliser la source de données appropriée dans la fonction de nuage de mots, en fonction du bouton radio sélectionné par l’utilisateur.
Cet exercice fait partie du cours
Études de cas : créer des applications web avec Shiny en R
Instructions
- Définissez une variable réactive nommée
data_sourcepour contenir les données utilisées pour le nuage de mots (ligne 28). - Si l’option « book » (« Art of War ») est sélectionnée, affectez le livre
artofwarcomme source de données. Si l’option « own » (« Utiliser vos propres mots ») est sélectionnée, affectez la valeur de la zone de texte comme source de données. Si l’option « file » (« Importer un fichier ») est sélectionnée, affectez le texte d’un fichier importé par l’utilisateur comme source de données (lignes 33 à 36). - Utilisez la variable réactive
data_source()comme argumentdatade la fonction de nuage de mots (ligne 51).
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
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)