Ich baue eine App mit mehreren Tabs auf, von denen einige übermäßige Berechnungen und andere schnell berechnen. Eine Checkbox, die es dem Benutzer erlauben würde, in Kombination mit einem "Refresh" -Button zwischen Reaktivität oder manueller Aktualisierung zu wählen, wäre ideal.Glänzend: Reaktivität kann vom Benutzer wählbar sein
Das folgende einfache Beispiel veranschaulicht, was ich anstrebe. Es funktioniert fast, abgesehen von einer letzten Aktualisierung, wenn das Kontrollkästchen "Automatisch aktualisieren" deaktiviert ist. Das ist ein Problem, sollte ein rechenintensiver Tab geöffnet sein. Gibt es einen Weg dazu?
ui.r
library(shiny)
shinyUI(fluidPage(
titlePanel("Test"),
sidebarLayout(
sidebarPanel(
checkboxInput("autoRefresh", "Automatically refresh", TRUE),
actionButton("refresh", "Refresh!"),
radioButtons("choice", "Choice of value:",
c("10" = 10,
"20" = 20))
),
mainPanel(
tabsetPanel(type = "tabs",
tabPanel("Add random decimals to value", textOutput("value"))
)
)
)
))
server.r
library(shiny)
shinyServer(function(input, output) {
output$value <- renderText({
input$refresh
if(input$autoRefresh == 1) {
input$choice
}
isolate({
output <- runif(1,0,1) + as.numeric(input$choice)
})
})
})
Vielen Dank im Voraus!
Tippfehler: Refesh. Wichtiger jedoch, das funktioniert nicht. Es wird aktualisiert, wenn das Kontrollkästchen deaktiviert ist. Dies liegt daran, dass es nicht so funktioniert, wie Sie es erklären ... die "if" -Anweisung wird erst eingegeben, wenn das Ändern von input $ choice die Ausführung des gesamten renderText() - Blocks auslöst. – hedgedandlevered
@hedgedandlevered Danke! aktualisierte die Antwort. –
Dieser Code funktioniert jetzt. –