2016-07-14 13 views
1

In meinem R glänzend sliderInput möchte ich den Bereich der Eingabe eines bestimmten Schiebereglers mit größeren maximalen Wert einschränken. Angenommen, die Eingabe muss im Intervall [1:10] sein.R glänzend sliderInput mit eingeschränkten Bereich

Natürlich könnte ich jetzt min = 1, max = 10 in sliderInput Optionen definieren, aber dann bekomme ich nur einen Schieberegler mit Werten in diesem Intervall.

Mein Ziel ist es, einen Schieberegler mit Werten (zum Beispiel) in [1:50] zu sehen, aber der Benutzer kann diesen Schieberegler nur im Intervall [1:10] bewegen. Dies würde meine App noch besser machen. Ist das möglich?

Antwort

2

Gebäude aus Ihrer vorherigen Frage können Sie die Min-Werte verwenden, hier Schieber 1 bis 80 max begrenzt ist und Schieber 2 beschränkt sich auf 50

rm(list = ls()) 
library(shiny) 

slider1limit <- 80 
slider2limit <- 50 

ui <-pageWithSidebar(

    # Application title 
    headerPanel("Sliders should sum to 100!"), 
    # Sidebar with sliders whos sum should be constrained to be 100 
    sidebarPanel(
    sliderInput("slider1", "Slider 1: ", min = 0, max = 100, value = 0, step=1), 
    uiOutput("slider")), 

    # Create table output 
    mainPanel(tableOutput("restable")) 
) 

server <- function(input, output,session) { 

    observeEvent(input$slider2,{ 
    values <- min((100 - input$slider2),slider1limit) 
    updateSliderInput(session, "slider1", min =0,max=100, value = values) 
    }) 
    output$slider <- renderUI({ 
    values <- min((100 - input$slider1),slider2limit) 
    sliderInput("slider2", "Slider 2: ", min=0,max=100, value = values) 
    }) 

    output$restable <- renderTable({ 
    myvals<- c(input$slider1, input$slider2, 100-input$slider1-input$slider2) 
    data.frame(Names=c("Slider 1", "Slider 2", "Slider 3"),Values=myvals) 
    }) 
} 
runApp(list(ui = ui, server = server)) 
+1

Sie wieder danken. Jetzt habe ich alles, was ich brauche, um es so zu bauen, wie ich es möchte. Du hast mir heute sehr geholfen –