下面提到的代码详情。
**server.R**
shinyServer(function(input, output) {
getTable <- reactive({
// Some manipulations done every 2 mins and table is updated
// Assume tbl_op has only one row with 3 columns
// The table values represent time in hh:mm:ss
tbl_op
})
output$tableUI <- renderTable({
getTable()
},include.rownames=FALSE)
})
**ui.R**
shinyUI(
fluidPage(
fluidRow(
column(width = 5, offset = 1,
tableOutput("tableUI")
)
)
)
)
我能够以所需的格式显示输出,但是我无法为其添加格式。
当时间差(系统时间与表格单元格中显示的值之间的差值的绝对值)超过2分钟时,我希望表格单元格值以红色突出显示。该表每两分钟更新一次。只要差异超过2分钟,就应突出显示单元格值。
如果可以使用Datatable,请提供代码。
答案 0 :(得分:0)
有两项任务:
可以使用formatStyle(
可以使用reactiveTimer
尝试类似:
UI
library(DT)
library(shiny)
shinyUI(
fluidRow(
DT::dataTableOutput("tableUI")
)
)
)
服务器
library(shiny)
library(DT)
tbl_op=data.frame(z=as.POSIXct(Sys.time())+1:10 )
shinyServer(function(input, output,session) {
ttt=reactiveValues(tbl_op=tbl_op)
autoInvalidate <- reactiveTimer(2000, session)
observe({
autoInvalidate()
print(Sys.time())
ttt$tbl_op$check=ifelse(Sys.time()> ttt$tbl_op$z,1,0)
})
output$tableUI <- DT::renderDataTable({
DT::datatable( ttt$tbl_op,rownames=F,
options=list(columnDefs = list(list(visible=FALSE,targets=1))))%>%formatStyle("check",target = 'row',backgroundColor = styleInterval(0.5,c("red","none")))
})
})
我每2秒更新一次并将单元格中的值与当前时间进行比较(为了简化测试)