有没有办法在添加 RShiny 按钮的同时保持即时操作?

Is there a way that add RShiny button but also keep the immediate action?

我是 RShiny 的新手。我做了一个程序,效果很好。它包含模拟功能,当参数发生变化时它可以立即做出反应。但是,我想添加一个可以再次使用参数和运行模拟功能的按钮。另外,我想保持即时反应。

我创建了一个类似的示例。

library(shiny)

ui <- fluidPage(

# Application title
titlePanel("Testing"),

# Sidebar with a slider input for number of sample
sidebarLayout(
  sidebarPanel(
     sliderInput("n",
                 "Number:",
                 min = 1,
                 max = 10,
                 value = 5)
  ),
  
  # Show sample result
  mainPanel(
    textOutput("sample")
  )
 )
)

# Define server logic
server <- function(input, output) {

x <- c(1:100)

output$sample <- renderPrint({
 sample(x, input$n)
 })
}

# Run the application 
shinyApp(ui = ui, server = server)

就像在这个示例中,我从 1 到 100 采样了 N 个数字。当 slicebar 改变时,结果会立即改变。同时,我想添加一个按钮,可以重新采样N个数字并得到另一个结果。

在这种情况下,我应该 select 按钮的哪个功能?非常感谢您的帮助!

您可以添加一个操作按钮,然后将您的数据移动到一个依赖于按钮和输入值的响应式元素中。例如

library(shiny)

ui <- fluidPage(
  
  # Application title
  titlePanel("Testing"),
  
  # Sidebar with a slider input for number of sample
  sidebarLayout(
    sidebarPanel(
      sliderInput("n", "Number:", min = 1, max = 10, value = 5),
      actionButton("rerun", "Rerun")
    ),
    
    # Show sample result
    mainPanel(
      textOutput("sample")
    )
  )
)

# Define server logic
server <- function(input, output) {
  
  x <- c(1:100)
  
  current_data <- reactive({
    input$rerun
    sample(x, input$n)
  })
  
  output$sample <- renderPrint({
    current_data()
  })
}

# Run the application 
shinyApp(ui = ui, server = server)