在我的闪亮应用程序中,我有一个render
,我只想在单选按钮更改值后执行,但仅在第一次发生这种情况时执行。有没有办法让它对第一次价值变化做出反应,而不是随后的变化?
答案 0 :(得分:3)
下面你会发现observeEvent
有ignoreInit
和once
之类的参数,我建议你去看一下官方网站上的功能定义{{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)