Tengo una tabla que se muestra dentro de una aplicación Shiny usando DT::renderDT() así:

DT::renderDT(tab %>% 
            selection = "none",
            extensions = 'Buttons',
            option = list(buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
                          dom = 'Brti')
          )

Y luego quería usar la función formatCurrency() también:

DT::renderDT(DT::datatable(tab) %>% 
              DT::formatCurrency(columns = 2:5, 
                                 currency = '',                                 
                                 mark = " ",
                                 digits = 0),
            selection = "none", 
            extensions = 'Buttons',
            option = list(buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
                          dom = 'Brti')
          )

Y recibe la siguiente advertencia: Warning in processWidget(instance) : renderDataTable ignores ... arguments when expr yields a datatable object; see ?renderDataTable es decir, no puedo proporcionar opciones al objeto datatable() y al renderDT().

Desafortunadamente, no encontré la manera de usar la función formatCurrency() directamente dentro de la función DT::renderDT(), ¿alguien puede decirme cómo debo hacer eso?

0
yeahman269 26 ago. 2020 a las 16:17

1 respuesta

La mejor respuesta

En este caso, los argumentos deben pasarse en la llamada datatable:

library(shiny)
library(DT)
library(datasets)

tab <- iris

ui <- fluidPage(DT::DTOutput("myTable"))

server <- function(input, output, session) {
  output$myTable <- DT::renderDT({
    DT::datatable(
      tab,
      selection = "none",
      extensions = 'Buttons',
      option = list(
        buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
        dom = 'Brti'
      )
    ) %>%
      DT::formatCurrency(
        columns = 2:5,
        currency = '',
        mark = " ",
        digits = 0
      )
  })
}

shinyApp(ui, server)
2
ismirsehregal 26 ago. 2020 a las 13:58