闪亮:为反应变量预先分配一个值

Shiny: pre-assign a value to a reactive varible

我有一个闪亮的应用程序,用于对 10 行 iris 数据进行采样。

当我第一次启动这个闪亮的应用程序时,我需要单击 sampling 操作按钮以显示采样的 iris 行。

是否可以预先分配一个值,让 shiny 在我第一次打开应用程序时显示采样的 iris 数据?

下面是原代码

library(shiny)

ui = fluidPage(
  actionButton(inputId = "sampling", label = "Sample rows"),
  tableOutput("DFTable")
)

server = function(input, output, session){
  
 n <- eventReactive(input$sampling, {
   getrows <- dim(iris)[1]
   return(sample(1:getrows, 10))
 })
  
  output$DFTable <- renderTable(iris[n(), ])
  
}

shinyApp(ui, server)

我试了两种方法,都不行。

  1. n
  2. 初始化默认值
n <- reactiveVal(value = 1:10)
  1. 使用if()函数
output$DFTable <- renderTable(
if(is.null(n())){n() = 1:10}
iris[n(), ]
)

非常感谢您的帮助。

下面的方法对你有用吗?

library(shiny)

ui = fluidPage(
  actionButton(inputId = "sampling", label = "Sample rows"),
  tableOutput("DFTable")
)

server = function(input, output, session){
  
  values <- reactiveValues()
  values$n <- sample(1:nrow(iris), 10)
  
  observeEvent(input$sampling, {
    values$n <- sample(1:nrow(iris), 10)
  })

  output$DFTable <- renderTable(iris[values$n, ])
  
}

shinyApp(ui, server)