r - R Shiny数据表基于SelectInput突出显示行
问题描述
我有一个闪亮的应用程序,它输出一个数据表。我希望数据表中的一行与selectInput
选择器相对应突出显示绿色(即选择“ C”时,整个行将被彩色绿色 - 对于其他选项,则相同)。谁能告诉我我会怎么做?
library(shiny)
dat <- data.frame(grp = c("A", "B", "C"),
val = 1:3)
ui <- fluidPage(
selectizeInput("grp", "Select Group", choices = c("A", "B", "C")),
dataTableOutput("tab")
)
server <- function(input, output, session) {
output$tab <- renderDataTable(
datatable(dat)
)
}
shinyApp(ui, server)
解决方案
使用[ docs ]formatStyle
设置行中的反应值backgroundColor
:styleEqual()
library(shiny)
grp_list <- c("A", "B", "C")
dat <- data.frame(grp = grp_list,
val = 1:3)
ui <- fluidPage(
selectizeInput("grp", "Select Group", choices = grp_list),
dataTableOutput("tab")
)
server <- function(input, output, session) {
vals <- reactiveValues(
row_priority = grp_list,
row_color = rep('white', 3)
)
observeEvent(input$grp, {
vals$row_priority <-
c(input$grp, vals$row_priority[vals$row_priority != input$grp])
vals$row_color <- c('lightgreen', 'white', 'white')
})
output$tab <- renderDataTable(
datatable(dat) %>%
formatStyle("grp",
target = "row",
backgroundColor = styleEqual(vals$row_priority,
vals$row_color,
default = 'white')
)
)
}
shinyApp(ui, server)
推荐阅读
- c# - AspNet Core 3 HttpClientFactory:TaskCanceledException
- esp8266 - 将:timeinfo = localtime(&now) 转换为 24Hr,然后提取 tm_hour,C/C++。语法帮助
- java - 将字符串匹配到多个正则表达式模式并返回组号
- java - 改造后第一次没有收到响应
- azure-table-storage - 数据工厂 v2 使用函数 addmonths() 将查询添加到表存储
- ruby - 为什么字符串“xabcx”在我的方法中以回文形式返回?(红宝石)
- r - 在 R 的循环中添加新行
- javascript - 当该选项的值为空时,Select 的值与选定的选项匹配
- redis - 您可以在 redis 运行时就地更新 redis 而不会导致任何停机吗?
- cisco - 使用 python 更改 cisco ios 描述 - excel 输入