我试图将背景颜色应用于“日期”信息的数据表:绿色=最新,黄色=过时,红色=真正过时。基本上就像‘样式,一个完整的表’热图的例子,在这里找到:https://rstudio.github.io/DT/010-style.html
我的代码看起来像这样;
library(wakefield)
library(shiny)
library(DT)
backlogTbl <- r_data_frame(n = 5,
date_stamp,
date_stamp,
date_stamp,
date_stamp) %>%
r_na(prob=.25)
backlogDT <- datatable(backlogTbl) %>%
formatStyle(names(backlogTbl),
backgroundColor = styleInterval(Sys.Date() - days(c(7,2)),
c("red", "yellow", "green")))当我运行这个时,每个非空背景都是绿色的,而不是绿色/黄色/或红色,这取决于值,但是当我将单个单元格与我的断点进行比较时,即
backlogTbl[1,1] < Sys.Date() - days(c(7,2))我可以看到,这些值在我定义的时间间隔内。
如果我通过我的代码传递虹膜数据集,它的格式很好,这让我怀疑问题是它的日期时间数据?我觉得我错过了一些明显的东西..。
提前谢谢你!
发布于 2018-02-06 18:04:32
我不认为这是目前支持的,我为它创建了一个GitHub问题。
解决方法之一是创建一个列,该列包含日期的整数版本,并具有基于此的样式。然后隐藏整数列。
library(shiny)
library(DT)
library(tidyverse)
library(lubridate)
ui <- fluidPage(
titlePanel("DateDemo"),
sidebarLayout(
sidebarPanel(
),
mainPanel(
DTOutput('tbl'),
width = 10,
height = "800px")
)
)
server <- function(input, output) {
output$tbl <-
renderDT({
splitDate <- as.Date("2018-02-02")
data_frame(ExampleDate = as.Date(c("2018-01-01","2019-01-01"))) %>%
mutate(ExampleDateInt = as.integer(ExampleDate)) %>% #make column with integer dates
datatable(options=list(columnDefs = list(list(visible=FALSE, targets=c(2))))) %>% #hide the integer column
formatStyle(columns = "ExampleDate",
valueColumns = "ExampleDateInt",
backgroundColor = styleInterval(as.integer(splitDate),c("#FB717E","#89EC6A"))) #format based on the integer column
})
}
shinyApp(ui = ui, server = server)https://stackoverflow.com/questions/47764806
复制相似问题