仅在rshiny中第一次按下按钮时执行功能

仅在rshiny中第一次按下按钮时执行功能,r,shiny,R,Shiny,在我闪亮的应用程序中,我有一个渲染,我只想在单选按钮更改值后执行,但这只是第一次发生。有没有办法让它对第一次值的变化做出反应,而不是随后的变化?下面你会发现,observeEvent有一些参数,比如ignoreInit和once,我建议你去看看官方网站上的函数定义。我还添加了shinyjs库及其disable功能,我认为这在这里很方便 rm(list=ls()) library(shiny) library(shinyjs) ui <- fluidPage( useShinyjs()

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

下面你会发现,
observeEvent
有一些参数,比如
ignoreInit
once
,我建议你去看看官方网站上的函数定义。我还添加了
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)
rm(list=ls())
图书馆(闪亮)
图书馆(shinyjs)

ui我建议添加一个简单的示例来说明您希望发生什么: