1

色を変更したい他のデータに反応する複数のスライダーがあります。長い CSS コードを避けたいので、shinyWidget の setSliderColor() 関数を使用したいと思います。この答えは、スライダーが 1 つしかないときに機能しましたが、スライダーが 2 つになったので機能しません。再現可能な例を次に示します。

library(shiny)
library(shinyWidgets)


ui <- fluidPage(
    
    
    sidebarLayout(
        sidebarPanel(
            textInput(inputId = "greeting",
                      label = "Say hi!"),
            actionButton(inputId = "submit", 
                         label = "Submit"),
            
            uiOutput("num_slider"),
            uiOutput("num_slider2"),
            
            
        ),
        mainPanel(DT::DTOutput("table"))
    ))

server <- function(input, output) {
    
        data <- reactive({
            req(input$submit)
            if(input$greeting == "hi!") {
            tibble(name = c("Justin", "Corey", "Sibley"),
                       grade = c(50, 100, 100))}
        })
        
        output$table <- renderDT({
            datatable(data())
        })
        
        
        output$num_slider <- renderUI({
            
            if(length(data()) > 0) {
                
                fluidPage(setSliderColor("#CA001B", sliderId = 1),
                          sliderInput(inputId = "num_filter2",
                                      label = "Filter by Number",
                                      min = 1,
                                      max = 10,
                                      value = c(1, 10)))}
            
        })
        
        output$num_slider2 <- renderUI({
            
            if(length(data()) > 0) {
                #This one won't change color
                fluidPage(setSliderColor("#CA001B", sliderId = 2),
                          sliderInput(inputId = "num_filter2",
                                      label = "Filter by Number",
                                      min = 100,
                                      max = 10000,
                                      value = c(100, 10000)))}
            
        })
    
}

# Run the application 
shinyApp(ui = ui, server = server)

SliderId を 1 にするか、-100:100 から変更しようとしましたが、1 つのスライダーしか変更できません。奇妙なことに、私の実際のダッシュボードでは、最後のスライダーのみが変更され、以前のスライダーは変更されませんが、このダッシュボードでは最初のスライダーのみが変更されます。コーディングした順番でいいのかな?どんな助けでも大歓迎です!

4

2 に答える 2