我有一个数据表,在某些行中有很多文本。
我想做的是将行中的默认文本显示限制为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进行切换,但是在那儿并不是很成功。
答案 0 :(得分:2)
这是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;",
"}")
))))