r - Shiny 的应用程序中的“重置输入”按钮

标签 r shiny

我想在我 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/

相关文章:

r - 根据来自不同 DataFrame 的分组值更新 DataFrame

r - 计算参数存储在列表中的函数

r - 从 Shiny 书签中排除所有输入

r - 在 Shiny 的仪表板 R 中动态绘制多个变量

r - 混淆矩阵。行和列的百分比

r - 如何计算 R 中的隐含波动率

r - 如何在 Shiny observeEvent 中监听多个事件表达式

R: ggplot2 与 geom_map 返回 "x and units must have length > 0"错误,尽管值转换为因子

bootswatch 中的 CSS 样式不适用于 Shiny R

r - 如何将 table1 包中的表保存到 CSV 文件中