我使用conditionalPanel
创建了一个用户界面,该用户界面首先向用户展示了一个面板,然后使用tabsetPanel
显示标签式信息中心。如下所示添加另一个tabPabel
的简单操作会以某种方式阻止server.R文件运行。我已经使用print语句进行了测试。看起来Shiny应用程序正在破坏,但我无法找到语法错误或任何原因。
conditionalPanel(
condition = "output.panel == 'view.data'",
tabsetPanel(id = "type",
tabPanel("Script", value = "script",
fluidPage(
br(),
fluidRow(
column(3, uiOutput("script.name")),
column(3, uiOutput("script.message"))
),
hr(),
plotlyOutput("plotly")
)
),
tabPanel("Location", value = "location",
fluidPage(
br(),
fluidRow(
# column(3, uiOutput("id.range"))
),
hr(),
plotlyOutput("plot")
)
)
# when this tabPanel is uncommented it doesn't work
# ,tabPanel("Accelerometer", value = "accelerometer",
# fluidPage(
# br(),
# hr(),
# plotlyOutput("plot")
# )
# ),
)
)
答案 0 :(得分:0)
它没有因为额外的tabPanel
而失败,它失败了,因为它包含对output$plot
的重复引用。 server
函数的每个输出只能显示一次。例如,这会运行,但如果重复的行被取消注释,则会失败:
library(shiny)
ui <- shinyUI(fluidPage(
# textOutput('some_text'),
textOutput('some_text')
))
server <- shinyServer(function(input, output){
output$some_text <- renderText('hello world!')
})
runApp(shinyApp(ui, server))
一个简单的解决方案是将render*
函数的结果保存到局部变量,然后可以将其保存为两个输出:
library(shiny)
ui <- shinyUI(fluidPage(
textOutput('some_text'),
textOutput('some_text2')
))
server <- shinyServer(function(input, output){
the_text <- renderText('hello world!')
output$some_text <- the_text
output$some_text2 <- the_text
})
runApp(shinyApp(ui, server))