情境:
以下代码生成一个数据表,其中彩色单元格作为闪亮输出。细胞的着色方式是表中具有最高值 的所有细胞 的细胞最红。
# __________ 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 的最高值的单元格最红。相反,我希望行 中 最高值的单元格最红。
问题:
为了达到这个目的,我需要将上述代码更改为什么?
答案 0 :(得分:1)
使用“formattable”看起来很容易。
library(formattable)
table <- formattable(iris, lapply(1:nrow(iris), function(row) {
area(row) ~ color_tile("transparent", "red")
}))
as.datatable(table)