Нечто подобное может работать. Мониторинг кнопки Make a step
с помощью reactiveVal
для обновления набора данных и повторной визуализации графиков.
library(shiny)
library(ggplot2)
dd <- tibble(Time = 1:10,
x = 1:10,
y = 1:10*10)
ui <- basicPage(column(1, actionButton("make_a_step", "Make a step")),
column(4, plotOutput("p1")),
column(4, plotOutput("p2")))
server <- function(input, output) {
n_steps <- reactiveVal(value = 0)
observeEvent(input$make_a_step,{
new_steps <- n_steps() + 1
n_steps(new_steps)
})
plot_fun <- function(df, x_or_y) {
ggplot(df, aes(x = "Time", y = !!as.name(x_or_y))) + geom_point()
}
sub_fun <- function(steps) {
validate(need(steps <= 10, "You've reached the last time point"))
dd[1:steps,]
}
output$p1 <- renderPlot({
plot_fun(sub_fun(n_steps()), "x")
})
output$p2 <- renderPlot({
plot_fun(sub_fun(n_steps()), "y")
})
}
runApp(list(ui = ui, server = server))