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

时间:2018-03-13 02:45:09

标签: r shiny

我在Rshiny应用程序中使用DataTable来显示Dataframe的内容。但是数据框的一个元素是文本,可以包含超过1000的字符。当我显示数据表时,它显示所有文本。我想将它截断为前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 个答案:

答案 0 :(得分:1)

我通过一些调整密切关注了第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")
})