gpt4 book ai didi

r - 防止在 Shiny 的应用程序加载时执行观察

转载 作者:行者123 更新时间:2023-12-05 04:11:44 25 4
gpt4 key购买 nike

在 Shiny 中,observe 语句在应用程序加载时运行,我想在某些情况下避免这种情况。例如,我可能有两个标题,我希望它们以特定值开始,并且在应用加载后我希望它们同步。

如果您运行下面的代码,标题将无限循环更新,因为应用会立即更新一个标题,然后更新另一个,依此类推。如果您取消注释下面的“first_time”代码块之一,那么两个标题将显示为以相同的值开头。如果您取消注释这两个 block ,那么它将执行我想要的操作——从预先指定的值开始,然后在进行更改时同步。

但这段代码很复杂,我不想在所有观察者中添加一个 if 语句。必须有更简单的方法。在查看文档时,似乎可能使用 suspended = TRUEresume() 但我找不到示例。

我问了一个related question而那个人的答案同样不雅。有什么想法吗?

library(shiny)

first_time1 <<- TRUE
first_time2 <<- TRUE

server <- function(input, output, session) {

observeEvent(input$title1, {
# if(first_time1){
# first_time1 <<- FALSE
# return()
# }
updateTextInput(session, "title2", value = input$title1)

})

observeEvent(input$title2, {
# if(first_time2){
# first_time2 <<- FALSE
# return()
# }
updateTextInput(session, "title1", value = input$title2)
})

}

ui <- fluidPage(
tabsetPanel(


tabPanel("A", textInput("title1", "titleA", "This is the title A")),
tabPanel("B", textInput("title2", "titleB", "This is title B"))
)
)


shinyApp(ui = ui, server = server)

最佳答案

您正在寻找的是 ignoreInit。见下文

  observeEvent(input$title1, {
updateTextInput(session, "title2", value = input$title1)
}, ignoreInit = T)

observeEvent(input$title2, {
updateTextInput(session, "title1", value = input$title2)
}, ignoreInit = T)

关于r - 防止在 Shiny 的应用程序加载时执行观察,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42165567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com