#r #datatables #dt
Вопрос:
Я пытаюсь раскрасить последнюю строку данных с помощью пользовательского контейнера внутри datatable.
Я получаю что-то ожидаемое только тогда, когда rownames = T
вхожу datatable(dat,rownames = T)
, но это не то, что мне нужно, мне нужен тот же результат, rownames = F
но это, похоже, ничего не дает.
Пожалуйста, помогите мне с помощью reprex ниже
Приведенный ниже код несколько работает, см. скриншот введите описание изображения здесь
set.seed(1)
dat <- matrix(sample(c(0:9999), size = 54, replace = TRUE), nrow = 6) %>% as.data.frame()
sketch = htmltools::withTags(table(
class = 'display',
thead(
tr(
th(rowspan = 1, 'Customer'),
th(colspan = 1, 'Transaction'),
th(colspan = 11, 'Numbers')
),
tr(
lapply(colnames(dat), th)
)
)
))
datatable(dat,container = sketch,rownames = T,options = list(pageLength = 10, dom = 't')) %>% # Works
formatStyle(names(dat),
background = styleInterval(c(0,5,10,50,100,500,1000,5000),
c("#ffffff", "#f2fbd2", "#c9ecb4", "#93d3ab", "#35b0ab"
,"#E5B9ADFF","#E5B9ADFF","#D98994FF","#D0587EFF"))) %>%
formatStyle(.,
columns = 1:ncol(dat),
valueColumns = 0,
target = 'cell',
backgroundColor = styleEqual(6, 'white'))
Это не работает с приведенным ниже кодом,
rownames = F
поскольку это единственное изменение
введите описание изображения здесь
datatable(dat,container = sketch,rownames = F,options = list(pageLength = 10, dom = 't')) %>% #Doesnt work
Спасибо.
Ответ №1:
Это нормально. Столбец имен строк равен 1,2,3,4,5,6, и вы подавляете этот столбец с rownames = FALSE
помощью . Решение состоит в добавлении скрытого столбца 1,2,3,4,5,6.
set.seed(1)
dat <- matrix(sample(c(0:9999), size = 54, replace = TRUE), nrow = 6) %>% as.data.frame()
dat <- cbind(V0 = 1:6, dat) # added column V0 = 1:6
sketch = htmltools::withTags(table(
class = 'display',
thead(
tr(
th(colspan = 1, ''),
th(colspan = 1, 'Customer'),
th(colspan = 1, 'Transaction'),
th(colspan = 7, 'Numbers')
),
tr(
lapply(colnames(dat), th)
)
)
))
datatable(
dat,
container = sketch,
rownames = FALSE,
options = list(
pageLength = 10,
dom = 't',
columnDefs = list(
list(targets = 0, visible = FALSE) # hide column V0
)
)
) %>%
formatStyle(
names(dat),
background = styleInterval(c(0,5,10,50,100,500,1000,5000),
c("#ffffff", "#f2fbd2", "#c9ecb4", "#93d3ab", "#35b0ab"
,"#E5B9ADFF","#E5B9ADFF","#D98994FF","#D0587EFF"))) %>%
formatStyle(columns = 2:ncol(dat),
valueColumns = 1,
target = 'cell',
backgroundColor = styleEqual(6, 'white'))