Ich erstelle ein animiertes Graph-Projekt mit dem Shiny von R Studio. Derzeit ist das "Go!" Schaltfläche initiiert die Animation. Ich möchte den "Reset" -Button haben, um die Variablen neu zu initialisieren und die Animation neu zu starten, aber da Shiny keine code-internen Änderungen an den Eingabe-Werten erlaubt, bleibe ich dabei. Das reale Projekt ähnelt in seiner Form den unten stehenden Beispielblöcken, ist aber viel komplizierter. Animation ist ein integraler Bestandteil der Informationen, die übermittelt werden. Wenn das Projekt abgeschlossen ist, möchte ich es auf dem Shiny-Server bereitstellen. Daher möchte ich, dass Benutzer die Animation mit verschiedenen Auswahlen erneut ausführen können, ohne den Link erneut öffnen zu müssen.Animation zurücksetzen in Shiny R Studio
# ui.R
library(shiny)
shinyUI(fluidPage(
# Application title
headerPanel("Cost Explorer"),
sidebarPanel(
actionButton("goButton", "Go!"),
actionButton("reset", "Reset"),
sliderInput("myvar", label=h6("Variability of cost"),
min=0, max=50, value=10)
),
mainPanel(
plotOutput(outputId="tsplot")
)
))
# server.R
library(shiny)
shinyServer(function(input, output, session) {
# initialize reactive values
ts <- reactiveValues(cost=rep(NA,100), year=(2010:2109), counter=1)
output$tsplot <- renderPlot({
plot(ts$year, ts$cost, xlim=c(2010,2110), ylim=c(-200,200), xlab="Year",
ylab="Cost (US Dollars)", type="l", main="Forecasted Cost Time series")
})
observe({
isolate({
if (ts$counter==1){
ts$cost[ts$counter]=50 #initial cost
}
if (ts$counter > 1){
ts$cost[ts$counter]=ts$cost[ts$counter-1]+rnorm(1,0,input$myvar)
}
ts$counter=ts$counter+1
})
if (((isolate(ts$counter) < 100)) & (input$goButton > 0)){
invalidateLater(200, session)
}
if (input$reset > 0){
# How do I add reset functionality?
}
})
})