Ich versuche, einige reaktive Radio-Buttons in Shiny zu erstellen, und stoße auf einige Probleme. Der folgende Code erstellt ein Beispiel für das, was ich sehe. Zum Beispiel gibt es drei Auswahlen für Zahlen - 1, 2 und 3. Jede von diesen hat ihre eigenen möglichen Buchstaben-Auswahlen - wenn 1 oder 3 ausgewählt sind, sind A oder B verfügbar, aber wenn 2 ausgewählt ist, A, B, oder C sind verfügbar.Keeping Shiny Reactive Radio Buttons Konstante
Das Problem liegt darin, dass ich möchte, dass der zweite Satz von Optionsfeldern nur Optionen anzeigt, die abhängig von der Nummerauswahl verfügbar sind. Die Buchstabenauswahl wird jedoch jedes Mal zurückgesetzt, wenn ich eine neue Nummer auswähle. Wenn ich also 2 und B gewählt habe und dann die Zahl auf 1 ändere, ändert sich automatisch die Buchstabenauswahl zu A. Ich möchte, dass die zweite Auswahl bleibt, wenn es eine Option ist, so dass, wenn ich 2 und B gewählt habe, Ich könnte dann die Nummer ändern, was immer ich möchte, und B würde ausgewählt bleiben. Aber wenn ich 2 und C gewählt hätte, dann änderte ich die Zahl auf 1, offensichtlich gibt es kein C unter 1, also müsste es auf einen Standard zurückgesetzt werden (A, höchstwahrscheinlich).
Wie gehe ich vor, um die Radiobuttons so einzurichten, dass sie sich so verhalten?
library('shiny')
library('shinydashboard')
# Input Data
inputData <- data.frame(a = c(1, 1, 2, 2, 2, 3, 3),
b = c('A', 'B', 'A', 'B', 'C', 'A', 'B')
)
# Body #############################
body <- dashboardBody(
radioButtons('selectA', 'Select Number',
choices = unique(inputData$a)),
uiOutput('selectB')
)
# UI #############################
ui <- dashboardPage(
dashboardHeader(title = 'Test', titleWidth = 290),
dashboardSidebar(width = 290),
body
)
# Server #############################
server <- function(input, output){
output$selectB <- renderUI({
radioButtons('selectB', 'Select Letter',
choices = unique(inputData[inputData$a == input$selectA, ]$b),
inline = TRUE)
})
}
shinyApp(ui, server)
Das kam ganz in der Nähe. Alles, was ich tun musste, war, Ihre ausgewählte Anweisung zu 'selected = ifelse (Eingabe $ selectB% in% unique (inputData [inputData $ a == Eingabe $ selectA,] $ b), Eingabe $ selectB, 'A'))' zu editieren . Das erlaubte den Wechsel zu einer Voreinstellung von A, wenn 2/C gewählt wurde, und ich kehrte zu 1 zurück. Ansonsten funktionierte das perfekt! Danke für die Hilfe. – Sam
Kein Problem! Ich werde meine Antwort bearbeiten, um diese Änderung aufzunehmen. –