Sto costruendo un progetto grafico animato usando R Studio's Shiny. Attualmente il "Go!" pulsante avvia l'animazione. Mi piacerebbe avere il pulsante "Ripristina" reinizializzare le variabili ed eseguire nuovamente l'animazione, ma poiché Shiny non consente modifiche all'interno del codice ai valori del pulsante $ di input, sono bloccato su come farlo. Il vero progetto è simile nella forma ai blocchi di esempio sottostanti, ma molto più coinvolto. L'animazione è parte integrante delle informazioni trasmesse. Quando il progetto è completato, ho intenzione di distribuirlo sul server Shiny, quindi vorrei che gli utenti fossero in grado di rieseguire l'animazione con selezioni diverse senza dover riaprire il collegamento.Ripristina animazione 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?
}
})
})