2016-05-31 26 views
1

ui.rから、私は最初のsliderInputの現在の値をsliderInputの2番目の値の最大値にします。これはどうすればいいですか?ui値のリアルタイム更新 - シャイニー

sliderInput("blockSize", "block size", min = 1, max = 12, value = 8, step = 1) 

#max should be the current value of blockSize instead of 12 
sliderInput("offset", "offset", min = 1, max = 12 , value = 1, step = 1) 
+0

使用 'observeEvent'とサーバ側の' updateSliderInput'が動的最初の –

+0

感謝の値に応じて第2のスライダを更新することである、ではありませんユーザー側でこのアップデートを反応的に行う方法はありますか?私は更新プログラムを速くしたい。 – andandandand

+0

更新は非常に高速です。最初のスライダをドラッグしている間に2番目のスライダを変更したい場合は、http://stackoverflow.com/questions/37420425/r-reactive-histogram#comment62347964_37420425を参照してください。スライダの生のjavascriptオブジェクトを変更しない限り(これは、リンクで言及したように、Shinyは基本的な実装に 'Ion.RangeSlider'を使用しています)、ui.Rで完全にこれを行う方法はありません。 –

答えて

2

最初のスライダ入力に応じて2番目のスライダ入力を更新するサンプルコード。キーが

observeEvent(input$bins, { 
    updateSliderInput(session, "bins2", max=input$bins) 
}) 

完全なコード

library(shiny) 

ui <- shinyUI(fluidPage(

    titlePanel("Old Faithful Geyser Data"), 

    sidebarLayout(
     sidebarPanel(
     sliderInput("bins", 
        "Number of bins:", 
        min = 1, 
        max = 50, 
        value = 30), 
     sliderInput("bins2", 
        "Number of bins:", 
        min = 1, 
        max = 50, 
        value = 30) 
    ), 

     mainPanel(
     plotOutput("distPlot") 
    ) 
    ) 
)) 

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

    observeEvent(input$bins, { 
     updateSliderInput(session, "bins2", max=input$bins) 
    }) 

    output$distPlot <- renderPlot({ 
     x <- faithful[, 2] 
     bins <- seq(min(x), max(x), length.out = input$bins + 1) 

     hist(x, breaks = bins, col = 'darkgray', border = 'white') 
    }) 
}) 

shinyApp(ui = ui, server = server) 
関連する問題