beobachten updateSelectInput basiert auf der ersten Auswahl
Meinem server.R hat den folgenden code möchte ich auf mein Shiny-app, wählte Staaten auf der Grundlage der Auswahl des Landes, aber es zeigt alle Staaten in der zweiten Zeile. Ich denke, hier observe
ist nur die Beobachtung, die nicht durchführen jegliche Aktion.
shinyServer(function(input, output, session) {
observe({
ddf = df[df$Date>=input$daterange[1] & df$Date<=input$daterange[2],]
updateSelectInput(session, "Country", choices = ddf$Country)
ddf1 = subset(ddf, grepl(input$Country, ddf$State))
updateSelectInput(session, "State", choices = ddf1$State)
})
}
Anhand der oben genannten Auswahl, ich möchte einige Daten Rahmen zum zeichnen. Wenn ich wählen Sie anderes Land, es ist sich verändernden Staaten-Liste für eine Sekunde und gehen Sie zurück zu alle Erste Land, in dem die Status-Liste. Ich wirklich zu schätzen, wenn jemand zeigen kann, hier ein Beispiel.
Mein ui.R-code ist unten
sidebarPanel(
wellPanel(dateRangeInput("daterange", "Date range:",
Sys.Date()-10,
Sys.Date()+10)),
wellPanel(selectInput("Country", "Select a Country:",
'')),
wellPanel(selectInput("State", "Select a State:",
'')))
- Versuchen Sie, die Dinge zu trennen, die mit zwei Beobachtern statt einer (und Sie sollten
reactive({})
zu bekommenddf
) - Ich habe versucht, mit zwei Beobachter und
reactive({})
zu bekommenddf1
, aber kein Glück.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, es gibt einen Konflikt in Ihrem Beobachter verursachen es enthält
input$Country
sowie ein updater für dieCountry
Eingang. Dann würde ich versuchen, es zu Spalten in zwei Beobachtern, und ich würde die Verwendung eines reaktiven Leiter zu machenddf
nur einmal.Darüber hinaus sollten Sie nicht verwenden die Ebenen der Kolonne eher als die Spalte selbst in der
choices
argument ?Wenn die
Country
undState
Spalten sind nicht Faktoren, sondern Zeichen, verwenden Sieunique()
stattlevels(droplevels())
.assign
eine.GlobalEnv
variable innerhalbobserve
.observe({ ddf1 = droplevels(subset(get_ddf(), grepl(input$Country, get_ddf()$State))) updateSelectInput(session, "State", choices = levels(ddf1$State)) assign("ddf1",ddf1, envir = .GlobalEnv) })
dataset = reactive({ ddf1 })
aber das ist der Druck aller StaatenreactiveValues()
stattassign
. Oder machen Sie eine reaktive Dirigentget_ddf1
ähnlichget_ddf
dies vielleicht sauberer. Beachten Sie auch, dass Sie nur eine reaktive Dirigent Rückkehr sowohlddf
undddf1
in einer Liste.