簡體   English   中英

Shiny DT 造型電池 colors

[英]Shiny DT Styling Cell colors

我正在嘗試加載一個文件,執行各種預處理步驟,包括對數據進行子集化。 我在一個單一的反應 function 中完成這一切,然后將各種格式化的數據幀分配給一個列表以從渲染 function 中“導出”。我在顯示表 renderDT 時遇到的挑戰只喜歡數據幀 object,它沒問題,直到我試圖弄清楚如何為某些單元格着色。 我找到的所有樣式單元格示例都需要數據表 object 而不是 dataframe。請參見示例: https://rstudio.github.io/DT/010-style.html

我正在嘗試根據以下規則為 C 列着色 [1,10] = 綠色,[11,19] = 黃色,[20,25] = 紅色。 我感謝任何關於如何修改 renderDT 以允許單元格移動的建議。 如果有辦法更改表格內的字體大小,還有人嗎?

require(readxl)
require(openxlsx)

 mydata<-structure(list(A = c(2, 2, 2, 6, 7, 8, 6, 7, 8, 6, 7, 8, 1, 1, 
 1, 1, 2), B = c("A", "A", "N", "O", "L", "L", "O", "L", "L", 
 "O", "L", "L", "A", "N", "N", "N", "A"), C = c(1, 2, 3, 4, 5, 
 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 20, 24)), class = "data.frame", row.names = c(NA, 
 -17L))

 runApp(
  list(
    ui = fluidPage(
      titlePanel("Import QUEST, Design, & Mitigation Lists"),
      sidebarLayout(
        sidebarPanel(
          fileInput('file1', 'Choose QUEST xlsx formatted file',
                    accept = c(".xlsx")
                   )),
        mainPanel(
          tabsetPanel(type = "tab",
                      tabPanel("Tab1", DTOutput('first')),
                      tabPanel("Tab2", DTOutput('second'))
                     )))),
    server = function(input, output){
      mydata1 <- reactive({
        req(input$file1)
        inFile <- input$file1
        mydata<-read_excel(inFile$datapath, 1)
        
        data1<-mydata[which(mydata<3),]
        data2<-mydata[which(mydata>6),]
        quest<-list(data1,data2)
        quest })
        
        output$first <- renderDT({as.data.frame(mydata1()[1])})
        
        output$second <- renderDT({as.data.frame(mydata1()[2])})
      
    }
))
shinyApp(ui, server)

如您所說,您需要設置數據表 object 的樣式並將此 object 傳遞給renderDT function。

您想要傳遞給 renderDT 的任何其他renderDT現在需要移至DT::datatable構造函數,請參閱其他帖子中的示例。

對於字體大小,另請參閱其他帖子

您必須在datatable中傳遞一個renderDT

output$first <- renderDT({
  datatable(as.data.frame(mydata1()[1])) %>% 
      formatStyle(
        columns = "C", 
        backgroundColor = styleInterval(c(1,11,20), c("white", "red", "green", "yellow"))
      )
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM