R Shiny 用反应值激活动作按钮两次
R Shiny Activing an Action Button twice with reactive values
我有以下闪亮的应用程序
server <- function(input, output, session) {
rv <- reactiveValues(i = 0)
output$myplot <- renderPlotly({
dt = data.frame(x = 1:10, y = rep(rv$i,10))
plot_ly(dt, x = ~x, y =~y)
})
observeEvent(input$run,{
rv$i <- 0
observe({
isolate({rv$i = rv$i + 1})
if (rv$i < 10){invalidateLater(1000, session)}
})
})
}
ui <- fluidPage(
actionButton("run", "START"),
plotlyOutput("myplot")
)
shinyApp(ui = ui, server = server)
操作按钮一次工作正常:如果我点击它,情节就会更新。但问题是我无法点击它两次,因为它会使应用程序崩溃。
我希望每次单击操作按钮时,rv$i 的值都回到 0 并且动画重新开始。
把一个观察者放在另一个观察者里面不是一个好主意。只需将内部观察器放在外面即可。
library(shiny)
library(plotly)
server <- function(input, output, session) {
rv <- reactiveValues(i = 0)
output$myplot <- renderPlotly({
dt = data.frame(x = 1:10, y = rep(rv$i,10))
plot_ly(dt, x = ~x, y =~y, mode = "markers", type = 'scatter')
})
observeEvent(input$run,{
rv$i <- 0
})
observe({
isolate({rv$i = rv$i + 1})
if (rv$i < 10){invalidateLater(1000, session)}
})
}
ui <- fluidPage(
actionButton("run", "START"),
plotlyOutput("myplot")
)
shinyApp(ui = ui, server = server)
我有以下闪亮的应用程序
server <- function(input, output, session) {
rv <- reactiveValues(i = 0)
output$myplot <- renderPlotly({
dt = data.frame(x = 1:10, y = rep(rv$i,10))
plot_ly(dt, x = ~x, y =~y)
})
observeEvent(input$run,{
rv$i <- 0
observe({
isolate({rv$i = rv$i + 1})
if (rv$i < 10){invalidateLater(1000, session)}
})
})
}
ui <- fluidPage(
actionButton("run", "START"),
plotlyOutput("myplot")
)
shinyApp(ui = ui, server = server)
操作按钮一次工作正常:如果我点击它,情节就会更新。但问题是我无法点击它两次,因为它会使应用程序崩溃。
我希望每次单击操作按钮时,rv$i 的值都回到 0 并且动画重新开始。
把一个观察者放在另一个观察者里面不是一个好主意。只需将内部观察器放在外面即可。
library(shiny)
library(plotly)
server <- function(input, output, session) {
rv <- reactiveValues(i = 0)
output$myplot <- renderPlotly({
dt = data.frame(x = 1:10, y = rep(rv$i,10))
plot_ly(dt, x = ~x, y =~y, mode = "markers", type = 'scatter')
})
observeEvent(input$run,{
rv$i <- 0
})
observe({
isolate({rv$i = rv$i + 1})
if (rv$i < 10){invalidateLater(1000, session)}
})
}
ui <- fluidPage(
actionButton("run", "START"),
plotlyOutput("myplot")
)
shinyApp(ui = ui, server = server)