我想在我 Shiny 的应用程序中实现一个“重置输入”按钮。
这是一个只有两个输入的示例,我使用更新函数将值设置回默认值:
library(shiny)
runApp(list(
ui = pageWithSidebar(
headerPanel("'Reset inputs' button example"),
sidebarPanel(
numericInput("mynumber", "Enter a number", 20),
textInput("mytext", "Enter a text", "test"),
tags$hr(),
actionButton("reset_input", "Reset inputs")
),
mainPanel(
h4("Summary"),
verbatimTextOutput("summary")
)
),
server = function(input, output, session) {
output$summary <- renderText({
return(paste(input$mytext, input$mynumber))
})
observe({
input$reset_input
updateNumericInput(session, "mynumber", value = 20)
updateTextInput(session, "mytext", value = "test")
})
}
))
我想知道的是是否还有一个功能可以将所有内容设置为默认值?这在多个输入的情况下很有用。
此外,我不确定我使用观察功能来检测何时点击操作按钮是否是处理操作按钮的“正确方法”?
最佳答案
shiny
中没有这样的功能,但是,这里有一种方法可以实现这一点,而无需本质上定义您的输入两次。诀窍是使用 uiOutput
并将要重置的输入包装在 div
中每次按下重置按钮时,其 id 都会更改为新的内容。
library(shiny)
runApp(list(
ui = pageWithSidebar(
headerPanel("'Reset inputs' button example"),
sidebarPanel(
uiOutput('resetable_input'),
tags$hr(),
actionButton("reset_input", "Reset inputs")
),
mainPanel(
h4("Summary"),
verbatimTextOutput("summary")
)
),
server = function(input, output, session) {
output$summary <- renderText({
return(paste(input$mytext, input$mynumber))
})
output$resetable_input <- renderUI({
times <- input$reset_input
div(id=letters[(times %% length(letters)) + 1],
numericInput("mynumber", "Enter a number", 20),
textInput("mytext", "Enter a text", "test"))
})
}
))
关于r - Shiny 的应用程序中的“重置输入”按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24265980/