gpt4 book ai didi

通过导航到 navbarPage 中的特定 tabPanel 触发 R Shiny 响应式(Reactive)

转载 作者:行者123 更新时间:2023-12-01 23:28:10 25 4
gpt4 key购买 nike

写一个 Shiny 的问题。我有一个 navbarPage,id = "navbar",并且在 navbarMenu 中,用户可以从几个 tabPanel 中选择一个。每个 tabPanel 都分配了一个值(值 = 1、值 = 2 等)。因此 input$navbar 是具有所选 tabPanel 值的 react 值。

我定义了一个响应式表达式,它对 tabPanel 的更改使用react(基于 input$navbar 使用react)。我真正想要的是对导航到特定的 tabPanel 使用react,而不是导航离开该 tabPanel。因此,当 input$navbar 从 1 更改为 2 时,我想要一个 react ,但是当从 2 更改为 1 时没有反应。我怎样才能做到这一点?

这是我的代码的相关片段,我认为我不需要一个完整的可重现示例,但如果我错了请告诉我。

#ui snippet
navbarPage(id = "navbar",
navbarMenu(title = "Title",
tabPanel(title = "tp1", value = 1),
tabPanel(title = "tp2", value = 2),
#more tabPanels and ui stuff...

#server snippet
rctvfx <- reactive({
#want this to react only when input$navbar changes from ==1 to ==2
input$navbar
isolate({
#do stuff
})
})

最佳答案

您可以使用 if陈述。这确保代码仅在用户导航到相应的 tab 时运行。 .

library(shiny)

shinyApp(
ui = navbarPage(
"App Title",
id = "navbar",
tabPanel("Plot"),
navbarMenu(
"More",
tabPanel("Summary"),
"----",
"Section header",
tabPanel("Table")
)
),
server = function(input, output){
observe({
if (req(input$navbar) == "Table")
message("Table has been selected")
if (req(input$navbar) == "Plot")
message("Plot has been selected")
})
}
)

我建议使用 observe而不是 reactive即使所有响应式观察者都处于空闲状态,也要确保一切正常运行。

关于通过导航到 navbarPage 中的特定 tabPanel 触发 R Shiny 响应式(Reactive),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48955647/

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