我在我正在处理的应用中大量使用bsCollapse
面板(来自shinyBS
库)。我希望能够在服务器端定义一个面板,如代码所示。代码不会运行并返回错误ERROR: argument is of length zero
。问题似乎是bsCollapse
不接受renderUI
参数并且需要bsCollapsePanel调用在ui.R中。
我已经尝试在服务器端使用bsCollapse()
,但是工作但很笨重,因为单个面板不会以相同的方式展开/折叠。我也试过加入outputOptions(output, "hipanel", suspendWhenHidden = FALSE)
,这个想法是我的" hipanel"会被评估得更早,但这并没有奏效。
我认为关键是renderUI / uiOutput没有返回bsCollapsePanel
接受的对象(至少不是在正确的时间),但我不是确定该怎么做。
server.R
shinyServer(function(input, output){
output$hipanel<-renderUI({
bsCollapsePanel("hello",helpText("It's working!"))
})
})
ui.R
shinyUI(fluidPage(
mainPanel(
bsCollapse(
bsCollapsePanel("This panel works",helpText("OK")),
uiOutput("hipanel")
))))
答案 0 :(得分:0)
似乎bsCollapse
需要一个bsCollapsePanel
所以只需添加此内容,然后您就可以将任何内容添加到内容中:
library(shiny)
library(shinyBS)
ui <- shinyUI(fluidPage(
mainPanel(
bsCollapse(
bsCollapsePanel("This panel works",helpText("OK")),
bsCollapsePanel("hello",uiOutput("hipanel"))
)
)))
server <- shinyServer(function(input, output,session){
output$hipanel<- renderUI({
helpText("It's working!")
})
})
shinyApp(ui,server)
您可以随时动态创建整个内容
library(shiny)
library(shinyBS)
ui <- shinyUI(fluidPage(
mainPanel(
uiOutput("hipanel")
)))
server <- shinyServer(function(input, output,session){
output$hipanel<- renderUI({
bsCollapse(
bsCollapsePanel("This panel works",helpText("OK")),
bsCollapsePanel("hello",helpText("It's working!"))
)
})
})
shinyApp(ui,server)