R+Shiny+DT中如何自动识别数值列并设置右对齐
解决方案
你只需要将formatStyle的columns参数替换为动态识别数值列的表达式即可,单行即可实现,不需要提前预知数值列的数量和名称:
# 写法1:传入逻辑向量,更简洁 formatStyle(columns = sapply(df, is.numeric), textAlign = 'right') # 写法2:传入列索引,兼容性更强 formatStyle(columns = which(sapply(df, is.numeric)), textAlign = 'right')
修改后完整的服务端代码:
server <- function(input, output) { output$table <- renderDT({ datatable(df) %>% formatStyle(columns = sapply(df, is.numeric), textAlign = 'right') }) }
说明
sapply(df, is.numeric)会遍历数据框的每一列,返回和列数等长的逻辑向量,数值列对应位置为TRUE,非数值列对应为FALSE- 如果你的表格数据是Shiny中的反应式变量,只需调整为
columns = sapply(req(你的反应式数据名()), is.numeric)即可适配动态数据场景
内容的提问来源于stack exchange,提问作者larry77
相关产品推荐
相关产品推荐

