调整R Shiny中盒子面板的大小

4
给定的R shiny脚本会生成一个带有许多selectInputs的框面板,如下面的快照所示。该框面板可以根据边栏的显示或隐藏进行调整,并且保持不变。
但是,当我移除或添加一个额外的小部件,比如一个selectinput时,小部件不能跨越框面板的长度,而是超出了面板。如何使得当我添加或移除一项额外的小部件时,能够保持端到端的跨度?
## app.R ##
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(),
dashboardBody(
box(title = "Data", status = "primary", solidHeader = T, width = 12,
    fluidPage(
      fluidRow(
column(2,offset = 0, style='padding:1px;', 
selectInput("select1","select1",c("A1","A2","A3"), selected = "A1")),
        column(2,offset = 0, style='padding:1px;', 
selectInput("select2","select2",c("A3","A4","A5"), selected = "A3")),
        column(2, offset = 0, 
style='padding:1px;',selectInput("select2","select2",c("A3","A4","A5"), 
selected = "A3")),
        column(2, offset = 0, 
style='padding:1px;',selectInput("select2","select2",c("A3","A4","A5"), 
selected = "A3")),
column(2, offset = 0, 
style='padding:1px;',selectInput("select2","select2",c("A3","A4","A5"), 
selected = "A3")),

        column(2, offset = 0, 
style='padding:1px;',selectInput("select2","select2",c("A3","A4","A5"), 
selected = "A3")),
        tags$head(
          tags$style("
                     .input-sm,.selectize-input {
                     min-height: 34px;  font-size: 11.2px;
                     }
                     ")))))))
server <- function(input, output) { }
shinyApp(ui, server)

Image capture


所以,如果您删除一个小部件,您希望其他小部件覆盖端到端。这是问题吗? - amrrs
@amrrs,再次感谢,是的,如果我移除它,那么如果我添加另一个小部件,长度会自动调整。 - Adam Shaw
1
但是您可以通过使用**column(2)**自己定义它。 - MLavoie
@MLavoie,非常感谢您的回复,这就是我要求修复的原因。无论我们添加或删除多少个小部件,条形图的长度都应保持端到端不变。 - Adam Shaw
1个回答

4

使用splitLayout,您可以尝试这样做。只需取消注释即可在框中拥有所有六个sliderInput

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    box(title = "Data", status = "primary", solidHeader = T, width = 12,
        splitLayout(
      cellArgs = list(style = "padding: 10px"),
                   selectInput("select1","select1",c("A1","A2","A3"), selected = "A1"),
                   selectInput("select2","select2",c("A3","A4","A5"), selected = "A3")
                #  selectInput("select2","select2",c("A3","A4","A5"), selected = "A3"),
               #   selectInput("select2","select2",c("A3","A4","A5"), selected = "A3")
               #   selectInput("select2","select2",c("A3","A4","A5"), selected = "A3")
             #     selectInput("select2","select2",c("A3","A4","A5"), selected = "A3")
                  ))))
server <- function(input, output) { }
shinyApp(ui, server)

1
很好,只需要一个小调整,如果你从右边检查,最后一个框的右边缘与表格边框重叠了,请给我一个修复方法,就这样。谢谢。 - Adam Shaw
在您上面的解决方案中,您能帮我让特定 selectInput 的滑块像我上面的问题一样显示在框外吗?目前它出现在框内,谢谢,请帮帮忙。 - Adam Shaw
您所说的特定selectInput的滑块是什么意思?您是想在名为data的框之外添加一个sliderInput()吗? - MLavoie
谢谢回复,我会非常清楚地说明。在R Shiny仪表板的框面板中,当您单击selectInput时,selectInput的项目会出现在框内,而我想让它出现在框外,就像我上面提出问题中的selectInput一样。请帮忙。 - Adam Shaw
这应该是一个不同的问题。但是在这里(https://dev59.com/t1kS5IYBdhLWcg3wSk7b#40098855)会解决你的问题! - MLavoie
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接