如何动态更改 R Shiny 中列的宽度?

How to dynamically change the width of columns in RShiny?

我想知道是否可以(如果可以,如何)动态更改 RShiny 中的列宽?

下面是一个简单的可重现示例,说明我认为这可以工作(但不会,如果您取消对服务器部分的注释,应用程序会崩溃)。基本上我想做的是有一个滑块,它可以调整列的宽度。

也许这里有一个更好、更优雅的例子,说明我真正想做的事情 (link)。我想要两个并排的面板,当您调整一个面板的宽度(即向左或向右拖动面板的边框)时,旁边的面板会自动调整大小以适应 space。

有谁知道如何在 Shiny 中执行此操作?

感谢您的帮助!

library(shiny)

length_1 = 2
length_2 = 10

ui <- fluidPage(
 fluidRow(
   column(width = length_1,"Text"),
   column(width = length_2,"More text")
 ),
 fluidRow(
   column(
   width = 12, sliderInput("length","slide",min = 0,max = 12,value = 2)
 ))
)

server <- function(input, output, session) {
  #length_1 = input$length
  #length_2 = 12-input$length

}

shinyApp(ui, server)

您可以使用 renderUI 来做到这一点

library(shiny)
ui <- fluidPage(
    fluidRow(
        column(
            width = 12, sliderInput("length","slide",min = 1, max = 11,value = 2)
        )),
    fluidRow(
        uiOutput("cols")
    )
)

server <- function(input, output, session) {

    output$cols <- renderUI({
        tagList(
            column(width = input$length,"Text"),
            column(width = 12-input$length,"More text")
        )
    })
}

shinyApp(ui, server)