重置 RShiny 中的滑块

ale*_*lex 5 r reset shiny

我是闪亮的新手,正在制作一个应用程序,用户可以在其中调整 3 个滑块。输出是 3 个滑块的总变化(以 % 形式表示)以及与初始形式的差异。

我添加了一个“重置”按钮,以便我可以将滑块全部更改回 0,但它不起作用。

我尝试寻找Rshiny:resetplottodefaultstateResetinputswithreactiveappinshiny,但无济于事。我尝试了一段代码:

  observeEvent(input$reset,{
    input$Var1=0 
    return(input$Var1)
  })
Run Code Online (Sandbox Code Playgroud)

调整单个滑块并将其设置为0,然后返回该值,同样无济于事。有什么建议么?

我的完整代码是:

library(shiny)

ui=fluidPage(
  titlePanel("Sum of Sliders"),
  fluidRow(
    column(2,
           sliderInput("Var1", "Slider1:",
                       min = -100, max = 100,
                       value = 0),
           sliderInput("Var2", "Slider2:",
                       min = -100, max = 100,
                       value = 0),
           sliderInput("Var3", "Slider3:",
                       min = -100, max = 100,
                       value = 0),
           submitButton("Submit"),
           actionButton("reset", "Reset")
    ),
    column(6,
           verbatimTextOutput("text"),
           verbatimTextOutput("text2"),
           verbatimTextOutput("change")
    )
  )
)

server=function(input, output) {
  observeEvent(input$reset,{
    input$Var1=0 
    return(input$Var1)
  })

  output$text <- renderText({
    paste("Starting Value:", 0)
  })

  output$text2= renderText({
    v=rep(0,3)
    v[1]= input$Var1/100
    v[2]= input$Var2/100
    v[3]= input$Var3/100
    paste("Slider Sum:", sum(v))
  })

  output$change <- renderText({
    paste("Difference is:", output$text2-output$text)
  })
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

Flo*_*ian 6

要更改现有输入,您可以使用updateSliderInput. 另外,由于您包含了submitButton,我假设您希望更改仅在单击该按钮时应用。使用reactiveVal's 来获得所需的行为可能是最简单的。下面给出了一个工作示例,创建output$change留给读者作为练习;)希望这会有所帮助!

library(shiny)

ui=fluidPage(
  titlePanel("Sum of Sliders"),
  fluidRow(
    column(2,
           sliderInput("Var1", "Slider1:",
                       min = -100, max = 100,
                       value = 0),
           sliderInput("Var2", "Slider2:",
                       min = -100, max = 100,
                       value = 0),
           sliderInput("Var3", "Slider3:",
                       min = -100, max = 100,
                       value = 0),
           actionButton('submit','Submit'),
           actionButton("reset", "Reset")
    ),
    column(6,
           verbatimTextOutput("text"),
           verbatimTextOutput("text2")
    )
  )
)

server=function(input, output, session) {
  observeEvent(input$reset,{
    updateSliderInput(session,'Var1',value = 0)
    updateSliderInput(session,'Var2',value = 0)
    updateSliderInput(session,'Var3',value = 0)
  })

  rv_text1 <- reactiveVal()
  rv_text2 <- reactiveVal()

  observeEvent(input$submit,{
    rv_text1(paste("Starting Value:", 0))
    v=rep(0,3)
    v[1]= input$Var1/100
    v[2]= input$Var2/100
    v[3]= input$Var3/100
    rv_text2(paste("Slider Sum:", sum(v)))

  })

  output$text <- renderText({rv_text1()})
  output$text2 <- renderText({rv_text2()})

}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)