Как динамически изменить ширину столбцов в Ршинах? - PullRequest
0 голосов
/ 24 апреля 2020

Мне было интересно, возможно ли (и если да, то как) динамически изменять ширину столбцов в Ршинах?

Ниже приведен простой воспроизводимый пример того, как я понял, что это может работать (но это не так, приложение вылетает, если вы не комментируете раздел сервера). По сути, я хотел бы иметь ползунок, который изменяет ширину столбцов.

Возможно, лучший, более элегантный пример того, что я на самом деле хотел бы сделать, здесь ( ссылка ). Мне бы хотелось, чтобы две панели располагались рядом друг с другом, а когда вы изменяете ширину одной (т.е. перетаскиваете границу панели влево или вправо), панель рядом с ней автоматически изменяет размеры, чтобы соответствовать пространству.

Кто-нибудь знает, как это сделать в 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)

1 Ответ

0 голосов
/ 24 апреля 2020

Вы можете использовать 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...