Cada vez que agrego columnas a la matriz, las columnas se reducen en ancho hasta que se vuelven demasiado pequeñas. ¿Hay alguna forma de aumentar el ancho de la página para que las columnas de la matriz no se encojan? Gracias

  output$mat <- renderUI({
        rw<-list(1:input$numoc)
        for (i in (1:input$numoc)) {
            rw[[1]][[i]] = paste("Outcome", i, sep=" ")
        }
 

        clm<-list(1:input$inp1)
        for (i in (1:input$inp1)) {
            clm[[1]][[i]] = paste("Treatment", i, sep=" ")
        }

        matrix1 <- matrix(seq(from=1, to=((input$numoc)*(input$inp1)), by=1), input$inp1, input$numoc, dimnames = list(clm[[1]],rw[[1]]))
        
        matrixInput("mat", "Probabilities", matrix1, rows=list(names=TRUE), cols=list(names=TRUE))
    })
0
X L 21 ene. 2021 a las 17:04

1 respuesta

La mejor respuesta

Eso es posible usando CSS. Una vez que hayamos sobrescrito table-layout: fixed; del elemento HTML table, las celdas del encabezado responden al atributo min-width. Puedes adaptar el ancho mínimo a tus necesidades.

Asegúrese de utilizar el inputID correcto para seleccionar la tabla HTML. En CSS, la ID está precedida por #.

Desventaja (por supuesto): en algún momento aparece una barra de desplazamiento horizontal.

library(shiny)
library(shinyMatrix)

# Define UI for application that draws a histogram
ui <- fluidPage(

  tags$head(
    tags$style(HTML(
        "div#mat table {
          table-layout: auto;
        }
        div#mat .matrix-input-col-header-cell div {
          min-width: 100px;
        }"
      ))),

    # Application title
    titlePanel("Min Col Width"),

    # Sidebar with a slider input for number of bins 
    sidebarLayout(
        sidebarPanel(
            sliderInput("numoc", "Number of bins:",
                        min = 1, max = 50, value = 5),
            numericInput("inp1", "Inp1", 1)
        ),

        mainPanel(
           uiOutput("mat") # show the matrix
        )
    )
)

# Server as provided by the asker
server <- function(input, output) {

  output$mat <- renderUI({
    rw <- list(1:input$numoc)
    for (i in (1:input$numoc)) {
      rw[[1]][[i]] <- paste("Outcome", i, sep = " ")
    }
    
    
    clm <- list(1:input$inp1)
    for (i in (1:input$inp1)) {
      clm[[1]][[i]] <- paste("Treatment", i, sep = " ")
    }
    
    matrix1 <- matrix(seq(from=1, to=((input$numoc)*(input$inp1)), by=1), input$inp1, input$numoc, dimnames = list(clm[[1]],rw[[1]]))
    
    matrixInput("mat", "Probabilities", matrix1, rows=list(names=TRUE), cols=list(names=TRUE))
  })
  
}

shinyApp(ui = ui, server = server)

Probé esta muestra en Firefox y R-Studio App Viewer.

1
Jan 21 ene. 2021 a las 17:07