反应性滑块输入在同一滑块中结束

时间:2018-09-20 01:01:44

标签: r shiny slider

我想创建一个范围滑块,在此范围内选择滑块的一端会更新同一滑块的另一端。我知道诀窍在于观察一端的更改并使用它来更新另一端。但是,我的行为是滑块来回翻转,我无法弄清为什么它没有沉降。

在此示例中,我希望将滑块居中放置在0-100比例尺内,以便将input$slider[1]设置为10时,input$slider[2]移至90,并且当input$slider[2]被移至80时,input$slider[1]被移至20。下面的示例(越野车)代码:

library(shiny)

ui <- fluidPage(
  uiOutput("slidertest"),
  verbatimTextOutput("values")
)

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

  sliderends <- reactiveValues(end=c(NULL,NULL))

  observe({
    sliderends$end[1] <- 100-input$slider[2]
  })

  observe({
    sliderends$end[2] <- 100-input$slider[1]
  })

  output$slidertest <- renderUI({
    sliderInput("slider","Update Ends?", min = 0, max=100, value=c(sliderends$end[1],sliderends$end[2]))
  })

  output$values <- renderText({paste(input$slider[1], input$slider[2], sliderends$end[1], sliderends$end[2], sep=";")})
}

shinyApp(ui, server)

对于我在做什么错和工作建议的解释将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

您的滑块输入似乎陷入了无限循环。

input$slider[1]更改→input$slider[2]更改→input$slider[1]更改......

您可以使用reactiveValues来检查sliderinput的起始值或sliderinput的结束值是否已更改,然后使用updateSliderInput来更新{ {1}}。

请参见以下代码:

sliderinput