在另一个observeEvent中创建动态编号的observeEvent可以通过使用reactiveValues和lapply函数来实现。下面是一个示例代码:
library(shiny)
ui <- fluidPage(
actionButton("add_btn", "Add Observer"),
verbatimTextOutput("output")
)
server <- function(input, output, session) {
# 创建一个reactiveValues对象用于存储动态编号的observeEvent
observe_events <- reactiveValues()
# 创建一个计数器,用于生成动态编号
counter <- 1
# 监听"add_btn"按钮的点击事件
observeEvent(input$add_btn, {
# 生成动态编号
observe_id <- paste0("observe_", counter)
# 创建动态编号的observeEvent
observe_events[[observe_id]] <- observeEvent(input$add_btn, {
output$output <- renderText({
paste("Observer", counter, "is triggered.")
})
})
# 增加计数器
counter <- counter + 1
})
}
shinyApp(ui, server)
在上述代码中,我们首先创建了一个reactiveValues对象observe_events
来存储动态编号的observeEvent。然后,我们创建了一个计数器counter
,用于生成动态编号。当点击"Add Observer"按钮时,我们使用observeEvent
函数创建了一个动态编号的observeEvent,并将其存储在observe_events
对象中。在observeEvent的回调函数中,我们更新了输出文本,显示触发的观察者编号。
这样,每次点击"Add Observer"按钮时,都会创建一个新的动态编号的observeEvent,并且每个observeEvent都会触发相应编号的输出文本更新。
请注意,这只是一个示例代码,实际应用中可能需要根据具体需求进行适当的修改和调整。
希望这个答案能够满足你的需求。如果有任何问题,请随时提问。
领取专属 10元无门槛券
手把手带您无忧上云