R 在闪亮的应用程序中使用dt的列宽

R 在闪亮的应用程序中使用dt的列宽,r,shiny,dt,column-width,R,Shiny,Dt,Column Width,在通过下拉菜单刷新数据后,是否有方法防止表自行调整大小 我知道这与中的问题完全相同,但据我所知,这个问题从未得到充分回答 library(shiny) library(tidyr) library(dplyr) library(DT) ui <- fluidPage(selectInput(inputId = "dayinput", label = "Day Filter",

在通过下拉菜单刷新数据后,是否有方法防止表自行调整大小

我知道这与中的问题完全相同,但据我所知,这个问题从未得到充分回答

library(shiny)
library(tidyr)
library(dplyr)
library(DT)

ui <- fluidPage(selectInput(inputId = "dayinput", 
                            label = "Day Filter", 
                            choices = c("Monday", "Tuesday","Wednesday")), 
                dataTableOutput("table1")
                )

server <- function(input, output) {

  output$table1 <- renderDataTable({
    price <- c("12", "11", "14")
    day <- c("Monday", "Tuesday", "Wednesday")
    df <- data.frame(price, day) %>% filter(day == input$dayinput)

    datatable(df, rownames = FALSE, class = 'cell-border stripe', 
              options = list(dom = 't', pageLength = -1, lengthMenu = list(c(-1), c('All')),
                             autoWidth = TRUE, columnDefs = list(list(width = '50px', targets = "_all"))))
  })
}

shinyApp(ui =ui, server = server)
库(闪亮)
图书馆(tidyr)
图书馆(dplyr)
图书馆(DT)

我想我一眼就误解了这个问题。无论如何,我认为你可以通过一些css样式来实现这一点

这只是一个小例子:

library(shiny)
library(tidyr)
library(dplyr)
library(DT)

ui <- fluidPage(
  tags$head(
    tags$style(HTML(
      "
#table1 {width: 250px !important}
#DataTables_Table_0 td {width: 125px !important}
      "
    ))
    ),
  selectInput(inputId = "dayinput", 
              label = "Day Filter", 
              choices = c("Monday", "Tuesday","Wednesday","Thuuuuuuuuuuuuuuuursday")), 
  dataTableOutput("table1")
)

server <- function(input, output) {

  output$table1 <- renderDataTable({
    price <- c("12", "11", "14", "15")
    day <- c("Monday", "Tuesday", "Wednesday","Thuuuuuuuuuuuuuuuursday")
    df <- data.frame(price, day) %>% filter(day == input$dayinput)

    datatable(df, rownames = FALSE, class = 'cell-border stripe', 
              options = list(dom = 't', pageLength = -1, lengthMenu = list(c(-1), c('All')),
                             autoWidth = FALSE)
    )
  })
}

shinyApp(ui =ui, server = server)
库(闪亮)
图书馆(tidyr)
图书馆(dplyr)
图书馆(DT)

ui是的,正常情况下这会起作用,不幸的是,我事先不知道列的数量,这使得很难预先确定表的适当宽度。你能确定一个固定宽度并将
scrollX=TRUE
添加到数据表选项中吗?或者用css来修复它?你是说固定的列宽吗?如果是的话,你能展示一些示例代码吗?如果你是指固定的桌子宽度,我看不到scrollX的用途?我编辑了我的答案。您还可以使用css规则确定列宽。假设你有一个20列的表格,而你的应用程序空间有限,你可以确定表格的固定最大宽度。如果表格宽度大于给定的空间,scrollX肯定是有意义的。DT的'columnDefs'参数在我这方面不起作用,所以我求助于使用CSS样式,就像您建议的那样,以应用最大列宽样式。