Функция formatPercentage
перезаписывает данные ячеек с помощью опции rowCallback
Datatables, и это не влияет на скрытые столбцы. Нужно внести изменения в функцию render
опции columnDefs
(поэтому вы должны записать форматирование в JavaScript).
library(dplyr)
library(DT)
df_mtcars <- mtcars %>%
mutate(
mpg_percents_visible = mpg / sum(mpg),
mpg_percents_hidden = mpg / sum(mpg)) %>%
select(mpg_percents_visible, everything())
render <- c(
'function(data, type, row, meta){',
' if(type === "display"){',
' return (100*parseFloat(data)).toFixed(0) + "%";',
' }else{',
' return data;',
' }',
'}'
)
datatable(
df_mtcars,
extensions = c('Buttons', 'Responsive'),
options = list(
responsive = TRUE,
columnDefs = list(
list(targets = 13, render = JS(render))
)
)) %>%
formatPercentage('mpg_percents_visible')
Я узнал, что здесь . Обратите внимание, что:
Единственный потенциальный улов с этим будет, если что-то изменится - columns.render вызывается только один раз, а затем кэшируется, тогда как этот расчет в rowCallback вызывается при каждом отрисовке. Если данные имеют статус c, то то, что я предложил, будет в порядке.