我创建了一个相当大的应用程序,我现在想要通过引入标签来扩展。到目前为止,我有一个例子:
ui.R
shinyUI(
#OLD CODE
)
server.R
(
#OLD CODE
)
我想做什么:
ui.R
shinyUI(
tabsetPanel(
"Tabs",
tabPanel("Old Code",value="tb1"),
tabPanel("New Code",value="tb2"),
id = "nlp"
),
if (id=="tb1") {
#OLD CODE
} else if (id=="tb2") {
#New Code
} else {
#Do nothing
}
如何让if函数将id识别为变量? 当我运行脚本时,它会找到错误对象'id'。所以我尝试输入$ id并输出$ id但没有用。
我也尝试过去服务器.R并尝试了
Server.R
output$id <- renderText("id")
在尝试将其重新纳入用户界面时也无效
我也试过
Server.R
output$id <- reactive({input$id})
当我尝试在UI中使用它时,这也无效。我哪里出错了,如何在UI中使用Id变量?
由于
答案 0 :(得分:2)
根据Shiny Tabsets示例,您应该将UI元素放入tabPanel
的每次调用中,如下所示:
shinyUI(
tabsetPanel(
tabPanel(
title = "Old Code",
plotOutput('plot1'),
plotOutput('plot2')
),
tabPanel(
title = "New Code",
tableOutput('table')
),
id = "nlp"
)
)
除非您尝试做的不是必要的,否则您的代码不需要知道客户端选择了哪个选项卡。我可能错了(请不要认为我是闪亮的权威),我认为未选择的标签中的元素不会被不必要地重新计算(除非依赖存在并且需要它)。