1
2つのslideinputで最大100の光沢のあるアプリケーションを作成したいと思います。つまり、ユーザーが1つのスライダの値を変更すると、他のスライダが自動的に変更されて制約を満たします(100入力$スライダー1)。光沢のある2つのsliderInputを100に制限する
サーバー:
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")
)
))
次のコードで
Examplecode
:
は、私がここに同様の質問を見つけましたこれは既に大丈夫な解決策です。しかし、ここでは、スライダー1を変更してスライダー2の自動変更を得ることができます。一方、ユーザーがスライダー2を変更した場合、スライダー1は制約に適合しません。 どちらのスライダも両方のスライダを変更して他のスライダを制約に適合させることができますか?
ため
renderUI
と一緒にダブルupdateSliderInput
ありがとう追加しています!最大値を100に保つことも可能です(1から100までの全範囲を表示するには)? –問題は、1つのスライダを縮小すると、後でそれを大きくすることはできません –
maxを設定する代わりに、他のスライダの値を直接設定することができます。たとえば、updateSliderInput(session、 "slider2"、value = 100 - input $ slider1) '100に合計を開始する必要があることに注意してください。 (私はちょうどそれを行うための編集を提案しました) –