我正在使用DT库来显示表格,但是我想说我想为某些行提供颜色,例如从第1行到第4行的RED:
如果可能的话,更改文本的颜色也会非常好。经过几个小时的搜索,我从图书馆DT中找到了这个功能:
datatable(df, rownames = FALSE) %>%
formatStyle(columns = "inputval",
background = styleInterval(c(0.7, 0.8, 0.9)-1e-6, c("white", "lightblue", "magenta", "white")))
但是我需要为所有列提供颜色,而不仅仅是代码中的inputval
选定的列,我可以将columns
赋予类似names(df)
的值,以便它可以为所有专栏?而styleInterval选择表中的值而不是行的间隔,我该怎么做才能选择行并给它们一个颜色?
答案 0 :(得分:5)
这样的事情应该可以胜任。请注意,我为了更多功能而故意为2:4而不是1:4着色:
library(shiny)
library(DT)
ui <- basicPage(
mainPanel(DT::dataTableOutput('mytable'))
)
server <- function(input, output,session) {
output$mytable = DT::renderDataTable(
DT::datatable(mtcars, options = list(
pageLength = 25,
rowCallback = JS('function(row, data, index, rowId) {',
'console.log(rowId)','if(rowId >= 1 && rowId < 4) {',
'row.style.backgroundColor = "pink";','}','}')
)
)
)
}
runApp(list(ui = ui, server = server))
编辑:动态着色行:这里我只是使用sub
来替换为行着色的范围
library(shiny)
library(DT)
fnc <- JS('function(row, data, index, rowId) {',
'console.log(rowId)','if(rowId >= ONE && rowId < TWO) {',
'row.style.backgroundColor = "pink";','}','}')
ui <- basicPage(
sliderInput("colorrows", "Which to color:",min = 0, max = 10, value = c(1,3)),
mainPanel(DT::dataTableOutput('mytable'))
)
server <- function(input, output,session) {
Coloring <- eventReactive(input$colorrows,{
fnc <- sub("ONE",input$colorrows[1],fnc)
fnc <- sub("TWO",input$colorrows[2],fnc)
fnc
})
output$mytable = DT::renderDataTable(
DT::datatable(mtcars, options = list(pageLength = 25,rowCallback = Coloring())
)
)
}
runApp(list(ui = ui, server = server))