Ich möchte eine Schaltfläche, um eine Aktion auf eine vordefinierte nicht reaktive Variable x
auslöst. Jedes Mal, wenn die Taste gedrückt wird, wird x <- x + 1
ausgeführt. Um zu überprüfen, ob es korrekt durchgeführt wurde, sollte das Ergebnis angezeigt werden. Um dies zu erreichen, habe ich versucht observeEvent()
. Aber es macht nur einmal was es soll. Wie funktioniert es richtig?Aktion Schaltfläche und beobachtenEvent
Es scheint, dass rv
nur innerhalb der observeEvent()
Funktion verfügbar ist. Wenn output$text_2 <- renderText({ rv$a })
außerhalb von observeEvent()
platziert wird, tritt ein Fehler auf. Wie kann ich etwas außerhalb von observeEvent()
getanes verwenden?
library(shiny)
x <- 0
ui <- fluidPage(
actionButton(inputId = "action",
label = "action"),
textOutput("text_1"),
textOutput("text_2")
)
server <- function(input, output) {
output$text_1<- renderText({ input$action })
observeEvent(input$action, {
x <- x + 1
rv <- reactiveValues(a = x)
output$text_2 <- renderText({ rv$a })
})
}
shinyApp(ui = ui, server = server)
Sie müssen verstehen, wie Scoping in R arbeitet und in glänzend. Die Variable 'x' wird in diesem Fall niemals geändert (sie wird bei jedem Drücken der Taste auf 1 gesetzt, aber nur die lokale Kopie von' x' wird auf 1 gesetzt, die globale Version bleibt 0). Und ein weiterer Fehler ist, dass 'rv' innerhalb der Serverfunktion definiert werden sollte, aber außerhalb des Beobachters. Denn gerade jetzt definieren Sie die 'rv'-Variable jedes Mal neu, wenn der Beobachter läuft. Sie sollten Artikel zum Thema Scoping in R und in Shiny (zwei separate Themen) lesen. –