Projektu animowanego wykresu tworzę za pomocą R Studio's Shiny. Obecnie "Go!" Przycisk inicjuje animację. Chciałbym, aby przycisk "Resetuj" ponownie zainicjował zmienne i ponownie uruchomił animację, ale ponieważ Shiny nie pozwala na wprowadzanie zmian w kodzie do wartości wejściowych $ button, utknąłem, jak to zrobić. Prawdziwy projekt jest podobny w formie do bloków przykładowych poniżej, ale znacznie bardziej zaangażowany. Animacja jest integralną częścią przekazywanych informacji. Kiedy projekt zostanie ukończony, zamierzam go wdrożyć na serwerze Shiny, więc chciałbym, aby użytkownicy mogli ponownie uruchomić animację z różnymi wyborami bez potrzeby ponownego otwierania łącza.Resetuj animację w 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?
}
})
})