在 R Shiny 中重置滑块
Reset sliders in RShiny
我是 shiny 的新手,正在制作一个用户可以调整 3 个滑块的应用程序。输出是3个slider的总变化%形式,和初始形式的差值。
我添加了一个 'reset' 按钮,以便我可以将滑块全部改回 0,但它不起作用。
我尝试寻找 , and ,但无济于事。我试了一段代码:
observeEvent(input$reset,{
input$Var1=0
return(input$Var1)
})
调整单个滑块并将其设置为0,然后return这个值,也无济于事。
有什么建议吗?
我的完整代码是:
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)
要更改现有输入,您可以使用 updateSliderInput
。此外,由于您包含了 submitButton
,我假设您希望更改仅在您单击该按钮时应用。使用 reactiveVal
可能最容易获得所需的行为。下面给出了一个工作示例,创建 output$change
留作 reader 的练习 ;) 希望这有帮助!
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)
我是 shiny 的新手,正在制作一个用户可以调整 3 个滑块的应用程序。输出是3个slider的总变化%形式,和初始形式的差值。
我添加了一个 'reset' 按钮,以便我可以将滑块全部改回 0,但它不起作用。
我尝试寻找
observeEvent(input$reset,{
input$Var1=0
return(input$Var1)
})
调整单个滑块并将其设置为0,然后return这个值,也无济于事。 有什么建议吗?
我的完整代码是:
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)
要更改现有输入,您可以使用 updateSliderInput
。此外,由于您包含了 submitButton
,我假设您希望更改仅在您单击该按钮时应用。使用 reactiveVal
可能最容易获得所需的行为。下面给出了一个工作示例,创建 output$change
留作 reader 的练习 ;) 希望这有帮助!
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)