1
在Shiny中,觀察語句運行在應用程序加載上,我想在某些情況下阻止此操作。例如,我可能有兩個標題,我想以某個值開始,在應用程序加載後,我希望它們同步。防止在Shiny中執行觀察應用程序加載
在下面的代碼中,如果您運行它,則標題將在無限循環中更新,因爲應用程序會立即更新一個標題,然後更新其他標題等等。如果您取消註釋下面的「first_time」代碼塊之一,則兩個標題將顯示爲以相同的值開始。如果你取消兩個塊的註釋,那麼它會做我想做的 - 從一個預先指定的值開始,然後在進行更改時同步。
但是這段代碼很複雜,我不想在所有觀察者中添加if
語句。必須有一個更簡單的方法。在查看文檔時,似乎可能使用了suspended = TRUE
和resume()
,但我找不到示例。
我問了一個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)
這個應用程序的目標是什麼? –