在R Shiny的UI中使用变量?

时间:2014-08-06 05:32:56

标签: r shiny

我创建了一个相当大的应用程序,我现在想要通过引入标签来扩展。到目前为止,我有一个例子:

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变量?

由于

1 个答案:

答案 0 :(得分:2)

根据Shiny Tabsets示例,您应该将UI元素放入tabPanel的每次调用中,如下所示:

shinyUI(
    tabsetPanel(
        tabPanel(
            title = "Old Code",
            plotOutput('plot1'),
            plotOutput('plot2')
            ),
        tabPanel(
            title = "New Code",
            tableOutput('table')
            ),
        id = "nlp"
        )
    )

除非您尝试做的不是必要的,否则您的代码不需要知道客户端选择了哪个选项卡。我可能错了(请不要认为我是闪亮的权威),我认为未选择的标签中的元素不会被不必要地重新计算(除非依赖存在并且需要它)。