Shiny应用添加selectInput过滤器后gt表格无法显示求助
问题排查与解决:Shiny中添加selectInput后gt表格不显示
核心问题及修复步骤
拼写错误导致初始选中无效
你在selectInput的selected参数里写了'Aprproved',正确拼写是'Approved'。这个错误会让初始选中值无法匹配数据中的状态,加载时可能直接过滤出空数据集。未开启多选模式导致单选项过滤后无结果
默认selectInput是单选组件,但你的逻辑需要同时选择多个状态(比如Approved和Rejected)才能计算出0到1之间的tasa_rechazada值。必须添加multiple = TRUE参数,否则:- 若只选
Rejected,所有行的tasa_rechazada都是1,会被filter(tasa_rechazada!= 1 & tasa_rechazada!= 0)过滤掉; - 若只选
Approved,所有行的tasa_rechazada都是0,同样会被过滤,最终没有数据生成表格。
- 若只选
修复后的selectInput代码
selectInput( inputId = "estado_solicitud", label = "Seleccione Estado Solicitud:", choices = unique(prestamos_complete$Estado.solicitud), selected = c('Rejected', 'Approved'), # 修正拼写错误 multiple = TRUE # 启用多选功能 )
额外优化:处理空结果场景
为了避免用户选择的组合没有符合条件的数据时表格完全消失,可以在生成gt表格前判断数据集是否为空,返回提示信息:
output$gttable1 = render_gt({ prestamos_complete %>% filter(Estado.solicitud %in% input$estado_solicitud) %>% group_by(Nombre,Cedula, Genero) %>% summarise(tasa_rechazada= sum(Estado.solicitud=='Rejected')/n(), total_solicitudes = n()) %>% filter(tasa_rechazada!= 1 & tasa_rechazada!= 0) %>% arrange(desc(total_solicitudes)) %>% ungroup() %>% slice_head(n=10) %>% # 判断是否为空数据集 {if(nrow(.) == 0) { gt(tibble(Mensaje = "No hay datos que coincidan con los filtros seleccionados")) } else { gt(.) %>% fmt_percent(columns = tasa_rechazada, decimals = 1) %>% fmt_number(total_solicitudes, decimals = 0) %>% tab_options(table.background.color = '#fdae6b', column_labels.border.top.color = 'black', column_labels.border.bottom.color = 'black', column_labels.border.lr.color = 'black', table_body.hlines.color = 'black') } } })
内容的提问来源于stack exchange,提问作者Emiliano Barone
相关产品推荐
相关产品推荐

