【问题标题】:Create text wrap and manage column width with Datatable in Shiny在 Shiny 中使用 Datatable 创建文本换行和管理列宽
【发布时间】:2020-12-14 12:47:20
【问题描述】:

我有一个包含大量书面文本的数据表。我想以一种易于阅读的方式来组织它。我尝试了一些想法,但它们似乎不起作用。我也愿意接受有关如何组织数据表的任何建议。

这是我试图控制列宽的代码。现在宽度非常宽,我想缩小选定的列。

output$newsfeed = renderDataTable({
  datatable(df, rownames = F, extensions = "Scroller", 
          options = list(deferRender = TRUE,
                         scrollY = 400,
                         scrollX = TRUE,
                         scroller = TRUE,
                         autoWidth = TRUE,
                         columnDefs = list(list(width = '50px', targets = list(1,2,3,4,5)))
                                                                       
  ))
})

感谢您的帮助。

【问题讨论】:

    标签: shiny datatables dt


    【解决方案1】:

    尝试对感兴趣的列使用width = '10%'

    library(DT)
    library(shiny)
    
    dat <- data.frame(
      V1 = c("A", "B"),
      V2 = c(
        "A cool guy living in US and Canada", 
        "A cool guy living in New York"
      ),
      V3 = c(
        "A cool guy living in US and Canada", 
        "A cool guy living in New Jersey"
      ),
      V4 = c(
        "A cool guy living in US and Canada", 
        "A cool guy living in California"
      ),
      V5 = c(
        "A cool guy living in the US and else where", 
        "A cool guy living in Texas"
      ),
      stringsAsFactors = FALSE
    )
    
    ui <- fluidPage(
      DTOutput("table")
    )
    
    server <- function(input, output){
      
      output[["table"]] <- renderDT({
        datatable(dat, options = list(
          deferRender = TRUE,
          scrollY = 400,
          scrollX = TRUE,
          scroller = TRUE,
          autoWidth = TRUE,
          columnDefs = list(list(width = '10%', targets = c(2,3,4)))
        ))  # %>% formatStyle(columns = c(2,3), width='20px')
      })
    }
    
    shinyApp(ui, server)
    

    【讨论】:

    • 出于某种原因,这在我闪亮的应用程序之外对我有用。但是,在我闪亮的应用程序中,它不起作用。我正在使用 bsDash4 而不是 shinydashboard。你认为这可能是原因吗?
    • 在这种情况下,请尝试sScrollXInner = "80%" 作为选项。它将减少所有列的宽度。尝试不同的百分比并找出适合您的需求。
    • @YBS 当文本是由您创建的空格分隔时,它可以工作。但是,如果该列的长文本仅由逗号分隔而没有任何空格,则此方法不起作用。我现在有类似的需求,列中的文本用逗号分隔,但它不像示例中那样工作。你能帮忙吗?
    • @chas,请将其作为新问题发布,然后有人可以帮助您。
    【解决方案2】:

    我猜 'extensions = "Scroller"' 冲突控制列宽。 当我将 'extensions = "Scroller"' 添加到 YBS 的代码时,文本不会被包装。

    【讨论】:

      猜你喜欢
      • 2019-08-05
      • 1970-01-01
      • 2017-02-01
      • 2013-11-11
      • 1970-01-01
      • 2021-03-29
      • 2020-12-15
      • 1970-01-01
      • 2022-01-08
      相关资源
      最近更新 更多