【发布时间】:2021-11-14 14:27:32
【问题描述】:
如果在 values 数据框中检测到我的选择输入选项中的 ID,我想在下拉菜单中更改项目的字体颜色。
例如,ID F001、F003、T006 和 T008 将在下拉菜单中显示蓝色字体颜色。 N002、T004 和 F005 将显示为红色。这个列表会随着时间不断变化,所以它需要是被动的。
我得到的最接近的是在我的 case_when 语句中使用 input$selectVariable。但是,当下拉列表展开时,每个项目都不会显示其各自的字体颜色,因为它只是选择输入。如何更改下拉菜单中的字体颜色,而不仅仅是选定的输入?
示例数据框:
df<- data.frame("ID" = c("F001","N002","F003","T004","F005"))
values <- data.frame("AnimalID"= c("F001","F003","T006", "T008"))`
用户界面:
library(shiny)
shinyUI(navbarPage(
tabPanel("Analysis",
sidebarLayout(
sidebarPanel(width = 10,
uiOutput('background_change'),
selectInput("selectVariable", "Select an ID:",
choices = unique(df$ID)),
),
mainPanel(dataTableOutput("Table1")))
)) )
服务器:
library(shiny)
library(shiny)
library(move)
library(amt)
library(tibble)
library(dplyr)
library(htmltools)
library(dygraphs)
library(ggplot2)
library(plotly)
library(shinythemes)
library(shinydashboard)
library(datetime)
library(shinyTime)
shinyServer(function(input, output, session) {
bg <- reactive({
#choices<- sort(unique(df$ID))
case_when(input$selectVariable %in% values$AnimalID ~
'#selectVariable ~ .selectize-dropdown, .options, .item {
color: blue ;
} ',
TRUE ~ '#selectVariable ~ .selectize-dropdown, .options, .item{
color: red ;
}')
})
output$background_change <- renderUI({
tags$head(tags$style(HTML(bg())))
})
output$Table1 <- renderDataTable({
values
})
})
【问题讨论】: