使用范围为的updateSliderInput更新闪亮的sliderInput

使用范围为的updateSliderInput更新闪亮的sliderInput,r,input,shiny,slider,range,R,Input,Shiny,Slider,Range,我有一个sliderInput(接收器),我想从另一个sliderInput(控制器)更新它。当我只为updateSliderInput中的value参数传递一个输入时,我的代码就工作了,但是如果我从receiver传递范围的向量,它就不工作了 在下面的代码中,我提供了两个滑块,可以工作,也可以不工作。我如何才能使updateSliderInput获取一个范围的值向量 library(shiny) shinyApp( ui <- fluidPage( fluidRow(

我有一个
sliderInput
(接收器),我想从另一个
sliderInput
(控制器)更新它。当我只为
updateSliderInput
中的value参数传递一个输入时,我的代码就工作了,但是如果我从receiver传递范围的向量,它就不工作了

在下面的代码中,我提供了两个滑块,可以工作,也可以不工作。我如何才能使
updateSliderInput
获取一个范围的值向量

library(shiny)

shinyApp(

  ui <- fluidPage(
    fluidRow(
        column(4, sliderInput("controller", "Controller:", min = 0, max = 50, value = c(10,20)))
        ,column(4, sliderInput("receiver1", "Receiver 1 - Works with 1 value input", min=0, max=20, value=10, step=1))
        ,column(4, sliderInput("receiver2", "Receiver 2 - Doesn't work with 2 values in a vector", min=0, max=20, value=10, step=1))
    )

    ,fluidRow(column(4, verbatimTextOutput("range1")))
    ,fluidRow(column(4, verbatimTextOutput("range2")))

  )

  ,server <- function(input, output, session) {
    observe({
      updateSliderInput(session = session, "receiver1", value = c(input$controller[1]), min = 0, max = 100)
      updateSliderInput(session = session, "receiver2", value = c(input$controller[1],input$controller[2]), min = 0, max = 100)
    })

    output$range1 <- renderPrint({input$controller[1]})
    output$range2 <- renderPrint({input$controller[2]})
  }

)
库(闪亮)
shinyApp(

ui您在
ui
中为
receiver1
receiver2
指定了一个值,因此它们在
updateSliderInput
中只接受一个值。如果您在
receiver2
中放置两个值的向量,它将在
updateSliderInput
中接受
控制器的两个值

library(shiny)

shinyApp(

  ui <- fluidPage(
    fluidRow(
      column(4, sliderInput("controller", "Controller:", min = 0, max = 50, value = c(10,20)))
      ,column(4, sliderInput("receiver1", "Receiver 1 - Works with 1 value input", min=0, max=20, value=10, step=1))
      ,column(4, sliderInput("receiver2", "Receiver 2 - Doesn't work with 2 values in a vector", min=0, max=20, value=c(0, 10), step=1))
    )

    ,fluidRow(column(4, verbatimTextOutput("range1")))
    ,fluidRow(column(4, verbatimTextOutput("range2")))

  )

  ,server <- function(input, output, session) {
    observe({
      updateSliderInput(session = session, "receiver1", value = c(input$controller[1]), min = 0, max = 100)
      updateSliderInput(session = session, "receiver2", value = c(input$controller[1],input$controller[2]), min = 0, max = 100)
    })

    output$range1 <- renderPrint({input$controller[1]})
    output$range2 <- renderPrint({input$controller[2]})
  }

)
库(闪亮)
shinyApp(

ui您在
ui
中为
receiver1
receiver2
指定了一个值,因此它们在
updateSliderInput
中只接受一个值。如果您在
receiver2
中放置两个值的向量,它将在
updateSliderInput
中接受
控制器的两个值

library(shiny)

shinyApp(

  ui <- fluidPage(
    fluidRow(
      column(4, sliderInput("controller", "Controller:", min = 0, max = 50, value = c(10,20)))
      ,column(4, sliderInput("receiver1", "Receiver 1 - Works with 1 value input", min=0, max=20, value=10, step=1))
      ,column(4, sliderInput("receiver2", "Receiver 2 - Doesn't work with 2 values in a vector", min=0, max=20, value=c(0, 10), step=1))
    )

    ,fluidRow(column(4, verbatimTextOutput("range1")))
    ,fluidRow(column(4, verbatimTextOutput("range2")))

  )

  ,server <- function(input, output, session) {
    observe({
      updateSliderInput(session = session, "receiver1", value = c(input$controller[1]), min = 0, max = 100)
      updateSliderInput(session = session, "receiver2", value = c(input$controller[1],input$controller[2]), min = 0, max = 100)
    })

    output$range1 <- renderPrint({input$controller[1]})
    output$range2 <- renderPrint({input$controller[2]})
  }

)
库(闪亮)
shinyApp(

你不会相信我花了多长时间看这个。谢谢!你不会相信我花了多长时间看这个。谢谢!