#r #shiny #dt
#r #блестящий #дт #dt
Вопрос:
У меня есть таблица, отображаемая в блестящем приложении с помощью DT::renderDT()
вот так:
DT::renderDT(tab %>%
selection = "none",
extensions = 'Buttons',
option = list(buttons = c('copy', 'csv', 'excel', 'pdf', 'print'),
dom = 'Brti')
)
а затем я захотел также использовать formatCurrency()
функцию:
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')
)
и получите следующее предупреждение:
Warning in processWidget(instance) : renderDataTable ignores ... arguments when expr yields a datatable object; see ?renderDataTable
т. Е. я не могу предоставить как сам datatable()
объект, так и renderDT()
опции.
К сожалению, я не нашел способа использовать formatCurrency()
функцию непосредственно внутри DT::renderDT()
функции, кто-нибудь может сказать мне, как я должен это сделать?
Ответ №1:
В этом случае аргументы должны быть переданы в 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)
Комментарии:
1. Здравствуйте и спасибо за ваш ответ. Из некоторых показаний я понял, что некоторые параметры доступны только внутри
DT::renderDT()
, а неDT::datatable()
нет, но, возможно, это неверно? т. Е. Все ли опции, доступные дляDT::renderDT()
, могут быть предоставлены непосредственноDT::datatable()
?2. Пожалуйста, смотрите
?renderDT
аргументы «…»:ignored when expr returns a table widget, and passed as additional arguments to datatable() when expr returns a data object
. — Соответственно,renderDT
просто передает аргументыdatatable
в случае, если вы предоставляете данные, а неdatatable
объект (просто удобная функцияrenderDT
).