Shiny中封装DT表格列隐藏功能函数时指定列未隐藏问题求助
问题根因
- DT包
datatable的columnDefs配置中,targets参数默认仅支持从0开始计数的列位置索引、或"_all"这类特殊标识,不直接识别列名字符串,直接传入'Species'无法匹配到对应列,导致隐藏规则不生效 - 原函数默认参数
colhidden = c(a)存在语法错误,变量a未定义,调用时如果不传colhidden参数会直接报错
修复后的可运行代码
library(DT) dt_table <- function(data, colhidden = c()){ # 将传入的列名转换为DT要求的0起始索引 hidden_col_index <- which(colnames(data) %in% colhidden) - 1 datatable(data, options = list( columnDefs = list( list(visible = FALSE, targets = hidden_col_index) ) )) } # 测试:隐藏iris的Species列 dt_table(iris, colhidden = c('Species'))
额外说明
- 如需同时隐藏多列,直接传入多列名的向量即可,示例:
dt_table(iris, colhidden = c('Sepal.Length', 'Sepal.Width', 'Species')) - 要注意R数据框的列索引从1开始,DT的targets索引从0开始,转换时必须减1,否则会匹配到错误的列
内容的提问来源于stack exchange,提问作者manu p
相关产品推荐
相关产品推荐

