首页 > 解决方案 > R闪亮折叠数据表中的长行

问题描述

我有一个数据表,其中一些行中有很多文本。

我想做的是将行中文本的默认显示限制为 4 行,然后在单击该行以展开它或仅显示该特定行时。

library(shiny)
library(DT)

data <- data.frame(
  question = c("question1", "question2", "guestion3", paste0("A ", paste0(rep("very", 1000), collapse = " "), "long question"), "..."),
  answer = c("answer1", "answer2", paste0("A ", paste0(rep("very", 1000), collapse = " "), "long answer"),
             paste0("Another ", paste0(rep("very", 200), collapse = " "), "long answer"), "...")
)

ui <- fluidPage(
  DT::dataTableOutput(('DTOut'))
)

server <- function(input, output) {

  output$DTOut <- DT::renderDataTable({
    data
  })
}

shinyApp(ui = ui, server = server)

我试图使用 max-height 和 toggle 进行游戏,但在那里并不是很成功。

标签: rdatatableshiny

解决方案


这是来自DT页面的解决方案。但它使用字符数和悬停在单元格上时显示的剩余文本。

datatable(data, options = list(columnDefs = list(list(
  targets = c(1,2),
  render = JS(
   "function(data, type, row, meta) {",
   "return type === 'display' && data.length > 100 ?",
   "'<span title=\"' + data + '\">' + data.substr(0, 100) + '...</span>' : data;",
   "}")
))))

推荐阅读