R Shiny中如何实现dataTableOutput表格单元格内容逐行堆叠展示
解决方案
你只需要修改renderDT部分的两处代码即可实现需求:
- 拼接节目信息时用HTML换行标签
<br>替代默认的逗号分隔符 - 给
renderDT添加escape = FALSE参数,允许表格解析HTML标签实现换行效果
调整后的renderDT代码
output$table<-renderDT({ rv()%>% arrange(desc(Date))%>% filter(Date>=input$daterange[1] & Date<=input$daterange[2])%>% filter(Hour>=input$hourmin & Hour<=input$hourmax)%>% filter(channel %in% input$channel)%>% group_by(channel,Date)%>% arrange(Date)%>% # 改动点1:添加collapse参数,用<br>拼接多条记录 summarise(Programme=paste0(Hour,":",substr(event,1,3), collapse = "<br>"), .groups = 'drop')%>% pivot_wider(names_from = Date,values_from = Programme) # 改动点2:关闭内容转义,允许解析HTML标签,可选添加垂直对齐优化 }, escape = FALSE, options = list( columnDefs = list(list(targets = "_all", valign = "top")) ))
补充说明
- 如果你运行原代码时
pickerInput报错,需要先安装加载shinyWidgets包:install.packages("shinyWidgets"),并在代码开头添加library(shinyWidgets) escape = FALSE适合当前内部展示、数据可控的场景,若表格要展示用户输入的不可控内容,需提前对特殊字符做转义处理避免安全风险。
内容的提问来源于stack exchange,提问作者metaltoaster
相关产品推荐
相关产品推荐

