r - Shiny中每个导航栏的条件面板
问题描述
我对 Shiny 有一个简单的问题:我使用的是 navbarPage 布局,并且有两个不同的侧边栏。我希望侧边栏以用户所在应用程序的哪个页面为条件。
这似乎很容易,并且以下方法可以很好地更改侧边栏面板,但是通过这种方法,我的选项卡标题会从顶部导航栏下拉到主面板中。我尝试了各种方法让它们回到导航栏,但都没有奏效。
怀疑有一个非常简单的解决方案,任何帮助都非常感激!
library(shiny)
ui <- navbarPage(title = "example",
sidebarLayout(
sidebarPanel(
conditionalPanel(condition = 'input.tabs==1',"sidebar 1"),
conditionalPanel(condition = 'input.tabs==2 | input.tabs==3',"sidebars 2&3")),
mainPanel(tabsetPanel(id="tabs",
tabPanel("About",value=1, "hello 1"),
tabPanel("parameters",value=2, "hello 2"),
tabPanel("outputs",value=3, "hello 3")
))))
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
解决方案
您不需要tabsetPanel
来实现这一点,只需将 分配id
给navbarPage
自身并查看单击了哪个
library(shiny)
ui <- navbarPage(title = "example",
id = 'tabs',
tabPanel("About",value=1, "hello 1"),
tabPanel("parameters",value=2, "hello 2"),
tabPanel("outputs",value=3, "hello 3"),
sidebarPanel(
conditionalPanel(condition = 'input.tabs == 1',"sidebar 1"),
conditionalPanel(condition = 'input.tabs == 2 | input.tabs==3',"sidebars 2&3")
)
)
server <- function(input, output, session) {
observe({
print(input$tabs)
})
}
shinyApp(ui = ui, server = server)
推荐阅读
- python - 从 ThreadPool 转换为 ProcessExecutorPool
- python - 如何加快opencv中网络摄像头的视频捕获速度?
- javascript - 如何删除行中的重复值
- python - 读取包含 utf-8 字符的 csv 文件头
- visual-studio-code - 在 VsCode 中设置 inc/dec 编辑器宽度时的步长
- python - 运行脚本以在终端中获取网络名称和密码时出现语法错误
- pascal - Pascal readkey 似乎导致后续 readln 忽略响应 readln 键入的第一个字符。readln 仅将第二个和以后的字符存储到 var
- terminal - Terminanl 删除不应删除的字符
- java - JOptionPane 中的文本块
- python - Python tkinter 画布没有留在自己的行和列中