2017-08-07 61 views
2

我使用DT庫以可視化的表,但讓我們說,我想給一個顏色,從第1行像例如RED一些行至第4行:如何給DT表的給定間隔的行賦予顏色?

enter image description here

而且這將是非常好的如果可能的話改變文本的顏色。經過搜索的時間,我發現從庫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選擇表格中的值而不是行的間隔,我該怎麼做才能選擇行並給它們一個顏色?

回答

3

像這樣的東西應該可以完成這項工作。請注意,我有色行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)) 

enter image description here

編輯:動態色彩行:在這裏我只是用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)) 

enter image description here

+0

謝謝你的回答,BU我有一個問題,行是用戶輸入是否可以傳遞給他們rollCallBack參數,如'if(rowId> = input $ fromRow && rowId

+0

查看上面的編輯,讓我知道你是否有任何問題 –