首页 > 解决方案 > 如何使用 lapply 在 Shiny 中创建反应对象?

问题描述

我目前有一个 Shiny 代码,它需要几个不同的反应数据集,但是这些数据集是按顺序生成的,我认为lapply随着数据集数量的增加,使用会更有意义。

repFunction1 <- reactive({
    iris$Species[1]
)}

repFunction2 <- reactive({
    iris$Species[2]
)}

repFunction3 <- reactive({
    iris$Species[3]
)}

我复制它的尝试lapply如下:

lapply(1:3, function(i){
    paste0('repFunction', i) <- reactive({
      iris$Species[i]
    })
})

#Both above and below don't work

lapply(1:3, function(i){
    assign(paste0('repFunction', i), reactive({
      iris$Species[i]
    })
  )
})

由于这两个都不起作用,有没有办法做到这一点而不必一遍又一遍地重复相同的代码?

标签: rshinylapply

解决方案


尝试这个:

lapply(1:3, function(i) {
  output[[ paste0("repFunction", i) ]] <- reactive({
    iris$Species[i]
  })
})

推荐阅读