如何使用 DT 包中的 renderDataTable() 格式化数据表的列?

How do I format columns of a datatable using renderDataTable() in the DT package?

我可以像这样格式化数据表对象的列

library(DT)
datatable(data.frame(Amount=c(1.00, 2.20, 4.15))) %>% formatCurrency(columns='Amount')

但是我如何使用 renderDataTable() 来做到这一点?

library(shiny)
library(DT)

ui <- shinyUI(fluidPage(
  DT::dataTableOutput('dtoMyTable')
))

server <- shinyServer(function(input, output){
  output$dtoMyTable <- DT::renderDataTable({
    data.frame(Amount=c(1.00, 2.20, 4.15))
  })
})

shinyApp(ui = ui, server = server)

阅读 DT::renderDataTable 上的帮助页面:

renderDataTable(expr, ...

expr
an expression to create a table widget (normally via datatable()), or a data object to be passed to datatable() to create a table widget

所以您只需先创建 datatable 对象,根据需要格式化,然后调用 renderDataTable.

server <- shinyServer(function(input, output){
  dt <- datatable(data.frame(Amount=c(1.00, 2.20, 4.15))) %>% 
    formatCurrency(columns='Amount')
  output$dtoMyTable <- DT::renderDataTable({dt})
})