如何为R语言中的Reactable表格设置默认筛选值
Reactable设置表格加载时默认筛选值
要实现表格加载时Manufacturer列默认筛选为Acura,需要对原代码做两处修改:
- 在自定义下拉筛选框中,给
Acura对应的<option>标签添加selected属性,确保下拉框默认显示选中Acura; - 添加初始化脚本,在表格渲染完成后自动执行筛选操作,确保表格数据默认过滤出Acura的记录。
修改后的完整代码如下:
library(reactable); library(htmltools) data <- MASS::Cars93[, c("Manufacturer", "Model", "Type", "Price")] # 组合表格和初始化脚本 tagList( reactable( data, filterable = TRUE, columns = list( Manufacturer = colDef( filterInput = function(values, name) { tags$select( onchange = sprintf("Reactable.setFilter('cars-select', '%s', event.target.value)", name), # 遍历唯一值,给Acura的option添加selected属性 lapply(unique(values), function(val) { tags$option(val, selected = ifelse(val == "Acura", NA, NULL)) }), style = "width: 100%; height: 28px;" ) } ) ), defaultPageSize = 5, elementId = "cars-select" ), # 添加初始化脚本,页面加载后执行筛选 tags$script(HTML(" document.addEventListener('DOMContentLoaded', function() { Reactable.setFilter('cars-select', 'Manufacturer', 'Acura') }) ")) )
代码说明
- 第一处修改:在生成
<option>时,通过ifelse判断当前值是否为Acura,若是则添加selected属性,让下拉框默认选中该选项; - 第二处修改:利用
DOMContentLoaded事件,在页面加载完成后调用Reactable.setFilter方法,手动触发筛选,确保表格数据默认只显示Manufacturer为Acura的记录。
内容的提问来源于stack exchange,提问作者Morts81
相关产品推荐
相关产品推荐

