Choisir la source de données (serveur)
Lorsque vous travaillez avec des boutons radio, il arrive que vous deviez utiliser une logique conditionnelle (instructions if-else) pour accéder à la valeur du bouton radio dans le serveur. C'est nécessaire lorsque des actions différentes sont effectuées selon le choix exact, et que la valeur choisie doit être examinée avant de décider de la marche à suivre.
Par exemple, avec les boutons radio qui sélectionnent une source de données, du code différent devra s'exécuter selon l'option choisie.
Votre prochaine tâche consiste à utiliser la source de données appropriée dans la fonction du nuage de mots, selon le bouton radio choisi par l'utilisateur.
Cette activité fait partie du cours
Études de cas : créer des applications Web avec Shiny en R
Instructions de l’exercice
- Définissez une variable réactive nommée
data_sourcepour contenir les données qui serviront au 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 » (« Utilisez vos propres mots ») est sélectionnée, affectez la valeur de la zone de texte comme source de données. Si l'option « file » (« Téléverser un fichier ») est sélectionnée, affectez le texte d'un fichier soumis 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 ce code d’exemple.
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)