我在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")
})
答案 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")
})