R+Shiny+DT:自动右对齐数字列

Posted

技术标签:

【中文标题】R+Shiny+DT:自动右对齐数字列【英文标题】:R+Shiny+DT: automatically right align numeric columns 【发布时间】:2021-11-15 03:13:28 【问题描述】:

请查看本文末尾的reprex。 我有一个混合了数字和非数字列的小标题。 数值均四舍五入到小数点后两位。 我使用 formatStyle 并手动选择要右对齐的数字列。

不幸的是,在现实生活中闪亮的应用程序中,我不知道每次我会有多少个数字列,所以我需要一种方法来自动选择它们以对齐它们。

它一定是单线,但到目前为止我一直没有成功。 任何人都可以在这里帮助我吗? 非常感谢!

library(shiny)
library(tidyverse)
library(DT)
#> 
#> Attaching package: 'DT'
#> The following objects are masked from 'package:shiny':
#> 
#>     dataTableOutput, renderDataTable



round_all <-  function(df, n)


res <- df %>% mutate(across(where(is.numeric), ~round(.x,n) ))

    
return(res)




set.seed(1234)

df <- tibble(x=letters[1:5], y=LETTERS[10:14],
             w=rnorm(5), z=rnorm(5)) %>%
    round_all(2)


ui <- fluidPage(

mainPanel(DTOutput("table"))
    
)


server <- function(input, output) 

    output$table <- renderDT(datatable(df) %>%
                             formatStyle(columns=c("w", "z"),
                                         textAlign = 'right')
              )








shinyApp(ui = ui, server = server)
#> 
#> Listening on http://127.0.0.1:7374

由reprex package (v2.0.1) 于 2021 年 9 月 21 日创建

【问题讨论】:

【参考方案1】:

你可以写例如numeric_cols &lt;- df %&gt;% keep(is.numeric) %&gt;% colnames():

library(shiny)
library(tidyverse)
library(DT)

round_all <- function(df, n) 
  res <- df %>% mutate(across(where(is.numeric), ~ round(.x, n)))

  return(res)



set.seed(1234)

df <- tibble(
  x = letters[1:5], y = LETTERS[10:14],
  w = rnorm(5), z = rnorm(5)
) %>%
  mutate_if(is.numeric, ~ .x %>% round(2))

ui <- fluidPage(
  mainPanel(DTOutput("table"))
)


server <- function(input, output) 
  numeric_cols <- df %>% keep(is.numeric) %>% colnames()
  
  output$table <- renderDT(
    datatable(df)
   %>%
    formatStyle(
      columns = numeric_cols,
      textAlign = "right"
    ))


shinyApp(ui = ui, server = server)

【讨论】:

谢谢!正是我想要的。

以上是关于R+Shiny+DT:自动右对齐数字列的主要内容,如果未能解决你的问题,请参考以下文章

更新 R Shiny 中的 DT 列过滤器选择

DT 数据表中的列对齐

R Shiny 中 DT::datatable() 中冻结标头问题的解决方法

如何自动调整大小和WPF右对齐GridViewColumn数据

如何在 WPF 中自动调整和右对齐 GridViewColumn 数据?

jsPDF自动右对齐x位置错误