我有一個問題,我沒有找到任何解決方案。 我想用DT :: datatable在閃亮的應用程序中顯示一張表。在這個選項卡中,我想對一些由它們的座標定義的單元格着色。下面是代碼示例,其中顏色的單元格對應於NA值:在A R控制檯(RStudio)上運行,但是當我實現這個在我閃亮的應用程序,有一個小錯誤時R閃亮的DataTable回調行爲
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"),"}"))
))
此代碼工作正常:在第一頁上,彩色單元格位於正確的位置,但當我點擊下一個按鈕查看其他頁面時,似乎彩色單元格不更新,並且它們仍然着色,即使沒有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"),"}"))
)))
}
)
我會很高興,如果有人能幫助我爲那個問題
問候
山姆
非常感謝!它工作得很好:) –
很高興幫助! –