仅在rshiny的第一个按钮上执行功能

时间:2017-04-30 14:21:49

标签: r shiny

在我的闪亮应用程序中,我有一个render,我只想在单选按钮更改值后执行,但仅在第一次发生这种情况时执行。有没有办法让它对第一次价值变化做出反应,而不是随后的变化?

1 个答案:

答案 0 :(得分:3)

下面你会发现observeEventignoreInitonce之类的参数,我建议你去看一下官方网站上的功能定义{{3 }}。我还添加了shinyjs库及其disable函数,我觉得这里很方便。

rm(list=ls())
library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  radioButtons("nums", "Will Execute only Once",c("1000" = 1000,"10000" = 10000), selected = 0),
  plotOutput("Plot")
)

server <- function(input, output) {
  v <- reactiveValues()
  observeEvent(input$nums, {
    v$data <- rnorm(input$nums) 
  },ignoreInit = TRUE, once = TRUE)

  output$Plot <- renderPlot({
    if(is.null(v$data)){
      return()
    }
    disable('nums')
    hist(v$data)
    box()
  })
}

shinyApp(ui, server)

Event handler