我想为不同的标签显示不同的输入.所以我尝试构建一个包含多个tabPanel的页面.但是,我不能像下面这样:
library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Header"),
tabsetPanel(
tabPanel(
headerPanel("Tab 1"),
sidebarPanel(
selectInput("var", "Parametre", choices = c("1", "2", "3"))
),
mainPanel(
textOutput("text1")
)
),
tabPanel(
headerPanel("Tab 2"),
sidebarPanel(
selectInput("var", "Parametre", choices = c("21", "22", "23"))
),
mainPanel(
textOutput("text2")
)
)
)
))
Run Code Online (Sandbox Code Playgroud)
我怀疑这pageWithSidebar是导致问题的原因,但我无法在Google群组中找到替代方案.有没有办法用自己的侧边栏和主面板显示多个标签,还是应该为此创建不同的应用程序?
Mar*_*ann 24
如果我没有误解你的问题,我认为你甚至可以通过提供tabsetPanel函数的id来逃避jQuery部分(来自@ f1r3br4nd答案)id = "conditionedPanels".的value(在主面板中选择哪个选项卡IE)的参数是随后经由可用的input变量.
最简单的示例:server.R除了shinyServer函数框架外,它可能是空的.该ui.R文件可能如下.
shinyUI(pageWithSidebar(
headerPanel("Conditional Panels"),
sidebarPanel(
conditionalPanel(condition="input.conditionedPanels==1",
helpText("Content Panel 1")
),
conditionalPanel(condition="input.conditionedPanels==2",
helpText("Content Panel 2")
)
),
mainPanel(
tabsetPanel(
tabPanel("Panel 1", value=1),
tabPanel("Panel 2", value=2)
, id = "conditionedPanels"
)
)
))
Run Code Online (Sandbox Code Playgroud)
bok*_*kov 10
我得到了我的工作,只有一个sidebarPanel喜欢在Shiny示例应用程序,但然后包装的东西sidebarPanel只在这里的单独conditionalPanel调用中的特定选项卡.然后诀窍是使作为条件参数的字符串成为一个jQuery语句,该语句查看当前所选选项卡的属性,并将其显示在侧边栏中应显示此选项的选项卡的名称:conditionalPanelhtml===
conditionalPanel(
"$('li.active a').first().html()==='Foo'",
actionButton("bar","Bar"));
Run Code Online (Sandbox Code Playgroud)
... Foo标签的标题在哪里.
简而言之,一个侧边栏但其内容以活动标签为条件.