Ich möchte eine glänzende App mit zwei Schiebeeingaben erstellen, die bis zu 100 hinzufügen. Das bedeutet, wenn der Benutzer den Wert eines Schiebereglers ändert, ändert sich der andere Schieberegler automatisch um die Einschränkung zu erfüllen (100 Eingabe $ slider1).Beschränken Sie zwei sliderInput in glänzend zu Summe 100
fand ich eine ähnliche Frage hier: Examplecode
mit dem folgenden Code:
Server:
library(shiny)
# Define server logic required
shinyServer(function(input, output) {
output$slider2 <- reactiveUI(function() {
sliderInput("slider2", "Slider 2", min = 0, max = 100 - input$slider1, value = 0)
})
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)
})
})
UI:
library(shiny)
# Define UI for application
shinyUI(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("slider2")
),
# Create table output
mainPanel(
tableOutput("restable")
)
))
Dies ist bereits eine Lösung, die in Ordnung ist. Aber hier kann man nur Schieberegler 1 ändern, um eine automatische Änderung von Schieberegler 2 zu erhalten. Wenn der Benutzer andererseits Schieberegler 2 ändert, passt Schieberegler 1 nicht zu der Beschränkung. Wie kann ich es möglich machen, dass man beide Schieberegler so ändern kann, dass der andere zum Constraint passt?
Danke hinzugefügt! Ist es auch möglich, den Maximalwert bei 100 zu halten (um den vollen Bereich von 1 bis 100 zu sehen)? –
Das Problem ist jetzt, wenn Sie einen Schieberegler verkleinern, können Sie ihn danach nicht größer machen. –
Anstatt den Maximalwert einzustellen, können Sie den Wert des anderen Schiebereglers direkt einstellen. ZB "updateSliderInput (Sitzung," slider2 ", Wert = 100 - Eingabe $ slider1)' Beachten Sie, dass Sie sie auf 100 summieren müssen, oder sie werden hin und her wechseln. (Ich habe gerade eine Bearbeitung vorgeschlagen, um das zu tun) –