Ich habe eine Shiny-App, bei der die Änderung in einer selectInput
eine Änderung der verfügbaren Optionen für den Benutzer in einer radioButtons
Gruppe bewirkt. Nach dem documentation on updateRadioButtons,Shiny updateRadioButtons kann das ausgewählte Element nicht löschen
das ausgewählte Element kann mithilfe
selected=character(0)
gelöscht werden.
Aber wie im folgenden Beispiel gezeigt, scheint dies nicht zu funktionieren. Wenn Sie während des Änderns der Eingaben die Meldungen in der Konsole betrachten, wird die aktuelle Farbe nie auf Null zurückgesetzt. Wenn Sie "rot" wählen und dann von "a" zu "b" wechseln, ändert sich der Wert von "1" zu "4", als ob Sie wieder "rot" gewählt hätten. Dies ist nicht das gewünschte Verhalten in der realen Anwendung - "Wert" sollte sich nur ändern, nachdem der Benutzer eine Auswahl getroffen hat.
Irgendwelche Vorschläge zur Korrektur?
library(shiny)
df <- data.frame(letter = c('a', 'a', 'a', 'b', 'b', 'b'),
color = c('red', 'blue', 'green', 'red', 'purple', 'orange'),
value = 1:6)
ui <- shinyUI(fluidPage(
tableOutput('show_df'),
selectInput('letter', 'Pick a letter', choices = c('a', 'b')),
radioButtons('color', 'Pick a color', choices = NULL, selected = character(0))
))
server <- shinyServer(function(input, output, session) {
output$show_df <- renderTable(df)
observe({
current_letter <- input$letter
message(paste('Current letter is:', current_letter))
updateRadioButtons(session,
'color',
choices = df$color[df$letter == current_letter],
selected = character(0))
})
observe({
current_color <- input$color
message(paste('Current color is:', current_color))
})
observe({
current_value <- df$value[df$letter == input$letter & df$color == input$color]
message(paste('Current value is:', current_value))
})
})
shinyApp(ui = ui, server = server)
Es ist wahrscheinlich besser, 'renderUI' zu verwenden, um die RadioButtons jedes Mal neu zu rendern, wenn Sie die Auswahl ändern. Auf diese Weise können Sie sicherstellen, dass RadioButtons zurückgesetzt werden. –
Es scheint, dass das Problem damit verbunden ist, 'df $ color' als Faktoren zu haben. Ich fügte der 'df' Definition' stringsAsFactors = FALSE' hinzu und es funktionierte. – Geovany
Bitte sehen Sie mir die Antwort unten. – Geovany