У меня проблема, для которой я не нашел никакого решения. Я хочу показать таблицу в моем блестящем приложении с DT :: datatable. На этой вкладке я хочу покрасить некоторые ячейки, которые определяются их координатами. Ниже приведен пример кода, где цветные ячейки соответствуют значениям NA:Обратное поведение DataTable в R Shiny
test.table <- data.frame(lapply(1:8, function(x) {1:1000}))
test.table[c(2,3,7), c(2,7,6)] <- NA
id <- which(is.na(test.table))
datatable(test.table,
options = list(drawCallback=JS(
paste("function(row, data) {",
paste(sapply(1:ncol(test.table),function(i)
paste("$(this.api().cell(",id %% nrow(test.table)-1,",",trunc(id/nrow(test.table))+1,").node()).css({'background-color': 'lightblue'});")
),collapse = "\n"),"}"))
))
Этого код прекрасно работает при запуске в R консоли (RStudio), но когда я реализую это в моем блестящем приложении, есть небольшая ошибка : на первой странице цветные ячейки находятся в нужном месте, но когда я нажимаю на следующую кнопку для просмотра других страниц, кажется, что цветные ячейки не обновляют, и они все еще окрашены, даже если нет NA. Вот рабочий пример по этой проблеме:
shinyApp(
ui = fluidPage(
fluidRow(
column(12,
dataTableOutput('table')
)
)
),
server = function(input, output) {
test.table <- data.frame(lapply(1:8, function(x) {1:1000}))
test.table[c(2,3,7), c(2,7,6)] <- NA
id <- which(is.na(test.table))
output$table <- renderDataTable(
datatable(test.table,
options = list(drawCallback=JS(
paste("function(row, data) {",
paste(sapply(1:ncol(test.table),function(i)
paste("$(this.api().cell(",id %% nrow(test.table)-1,",",trunc(id/nrow(test.table))+1,").node()).css({'background-color': 'lightblue'});")
),collapse = "\n"),"}"))
)))
}
)
я буду очень рад, если кто-то может помочь мне с этой проблемой
С уважением
Сэм
Большое спасибо! Это хорошо работает :) –
Рад, что это помогло! –