R 表中的动态列数

R 表中的动态列数,r,shiny,R,Shiny,我正在用fluidRows编写一个闪亮的应用程序,我想在应用程序中创建一个动态的列数。我可以使列正确地显示和消失,但我不知道如何也使它们相应地调整大小。理想的结果是,如果有3个列,则所有列的宽度为4,如果有2个列,则所有列的宽度为6。可能的列数是2、3或4,因此我不需要考虑更多的可变性 我知道我可以通过将整个列集传递给renderUI来实现这一点。然而,这需要我在server.R中定义列的内容,我宁愿避免这样做 有关我的应用程序的最低代码示例,请参见下文: library(shiny) ui &

我正在用
fluidRow
s编写一个闪亮的应用程序,我想在应用程序中创建一个动态的列数。我可以使列正确地显示和消失,但我不知道如何也使它们相应地调整大小。理想的结果是,如果有3个列,则所有列的宽度为4,如果有2个列,则所有列的宽度为6。可能的列数是2、3或4,因此我不需要考虑更多的可变性

我知道我可以通过将整个列集传递给
renderUI
来实现这一点。然而,这需要我在server.R中定义列的内容,我宁愿避免这样做

有关我的应用程序的最低代码示例,请参见下文:

library(shiny)
ui <- fluidPage(
    titlePanel("Dynamic Columns"),
    sidebarLayout(
        sidebarPanel(
            selectInput("column_count", "Number of Columns", 2:4, 2),
            submitButton("Go")
        ),
        mainPanel(
           fluidRow(
               column(3, "This is column 1"),
               column(3, "This is column 2"),
               conditionalPanel(
                   condition = "input.column_count >= 3",
                   column(3, "This is column 3")
               ),
               conditionalPanel(
                   condition = "input.column_count == 4",
                   column(3, "This is column 4")
               )
           )
        )
    )
)

server <- function(input, output) {}

shinyApp(ui = ui, server = server)
库(闪亮)

ui一种方法可能是使用javascript更改css类。我编写了一个简短的js脚本,使用所选的值(即2、3、4)和最大bootstrap.js列(即12):
12/value
,然后用新的宽度更新类:
col sm-*
。通过添加类
目标列
,我明确指定了哪些列应该调整大小。(您可以使用任何喜欢的名称。请确保在js函数中对其进行了更新。)。事件由提交按钮触发

下面是您的javascript示例。(我将应用程序包装在标记列表中)

库(闪亮)
用户界面