如何在R Shiny中截断DataTable中的文本?

3

我正在使用Rshiny应用程序中的DataTable来显示数据帧的内容。但是,数据帧的一个元素是文本,可能有超过1000个字符。当我显示datatable时,它会显示所有文本。我想将其截断为前250个字符,并在悬停时显示完整文本。我该怎么做?

ui.r

shinyUI(fluidPage(
  theme = shinythemes::shinytheme("flatly"),
  titlePanel("title"),
  sidebarLayout(
    sidebarPanel(
      width=0
    ),
    mainPanel(
      width=12,
      tabsetPanel(tabPanel("Data",DT::dataTableOutput("train_data",width = "100%")))
  )
  )
))

server.r

output$train_data <- renderDataTable({
 if(is.null(camry_data$train_data)){return ()}
    DT::datatable(camry_data$train_data, options = list(lengthMenu = c(5,10)),class = "display")
  })

1个回答

6
我紧密跟随这里的4.4节栏渲染,并进行了一些微调:https://rstudio.github.io/DT/options.html 此外,可以将targets参数设置为列索引的向量,例如c(1,3,5)
output$train_data <- renderDataTable({
 if(is.null(camry_data$train_data)){return ()}
    DT::datatable(camry_data$train_data, options = list(lengthMenu = c(5,10),
    columnDefs = list(list(
      targets = "_all",
      render = JS(
        "function(data, type, row, meta) {",
        "return type === 'display' && data != null && data.length > 30 ?",
        "'<span title=\"' + data + '\">' + data.substr(0, 30) + '...</span>' : data;",
        "}")
      ))),
      class = "display")
})

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接