如何根据单元格中的值逐行显示R闪亮的数据表?

时间:2018-02-02 10:14:43

标签: r datatable shiny

情境

以下代码生成一个数据表,其中彩色单元格作为闪亮输出。细胞的着色方式是表中具有最高值 的所有细胞 的细胞最红。

# __________  Minimal Example  ________________
# ---------------------------------------------

library(shiny)
library(DT)

  shinyApp(

    ui = fluidPage(
      fluidRow(
        column(12,
          DT::dataTableOutput('mytable')
        )
      )
    ),


    server = function(input, output) {

   output$mytable=DT::renderDataTable({
    irisNumbersOnly=iris[c("Sepal.Length","Sepal.Width","Petal.Length","Petal.Width")]
    brks <- quantile(irisNumbersOnly, probs = seq(.05, .95, .05), na.rm = TRUE)
    clrs <- round(seq(255, 40, length.out = length(brks) + 1), 0) %>%
    {paste0("rgb(255,", ., ",", ., ")")}
    iriswithcolorDT=datatable(iris)%>%
      formatStyle(names(irisNumbersOnly), backgroundColor = styleInterval(brks, clrs))
    return(iriswithcolorDT)

  })

    }
  )

目标

我想要一个逐行着色的数据表。我不希望表格中 alls cells 的最高值的单元格最红。相反,我希望行 中 最高值的单元格最红。

问题:

为了达到这个目的,我需要将上述代码更改为什么?

1 个答案:

答案 0 :(得分:1)

使用“formattable”看起来很容易。

library(formattable)
table <- formattable(iris, lapply(1:nrow(iris), function(row) {
  area(row) ~ color_tile("transparent", "red")
}))
as.datatable(table)

enter image description here