R Shiny : How to write loop for observeEvent

标签 r loops shiny lapply

我有以下代码。有没有办法将它写在循环或向量化语句中,例如 lapply?在我的实际代码中,我有更多的画笔,所以这将非常有帮助。谢谢。

忽略这一行。只需要添加更多文本。

observeEvent(input$brush_1,{
  Res=brushedPoints(D(),input$brush_1,allRows = TRUE)
  vals$keeprows = Res$selected_
  })

observeEvent(input$brush_2,{
  Res=brushedPoints(D(),input$brush_2,allRows = TRUE)
  vals$keeprows = Res$selected_

})

observeEvent(input$brush_3,{
  Res=brushedPoints(D(),input$brush_3,allRows = TRUE)
  vals$keeprows = Res$selected_

})

observeEvent(input$brush_4,{
  Res=brushedPoints(D(),input$brush_4,allRows = TRUE)
  vals$keeprows = Res$selected_

})

observeEvent(input$brush_5,{
  Res=brushedPoints(D(),input$brush_5,allRows = TRUE)
  vals$keeprows = Res$selected_

})

observeEvent(input$brush_6,{
  Res=brushedPoints(D(),input$brush_6,allRows = TRUE)
  vals$keeprows = Res$selected_

})

observeEvent(input$brush_7,{
  Res=brushedPoints(D(),input$brush_7,allRows = TRUE)
  vals$keeprows = Res$selected_

})

observeEvent(input$brush_8,{
  Res=brushedPoints(D(),input$brush_8,allRows = TRUE)
  vals$keeprows = Res$selected_

})

observeEvent(input$brush_9,{
  Res=brushedPoints(D(),input$brush_9,allRows = TRUE)
  vals$keeprows = Res$selected_

})

observeEvent(input$brush_10,{
  Res=brushedPoints(D(),input$brush_10,allRows = TRUE)
  vals$keeprows = Res$selected_

})

observeEvent(input$brush_11,{
  Res=brushedPoints(D(),input$brush_11,allRows = TRUE)
  vals$keeprows = Res$selected_

})

observeEvent(input$brush_12,{
  Res=brushedPoints(D(),input$brush_12,allRows = TRUE)
  vals$keeprows = Res$selected_

})

最佳答案

observeEventlapply 中效果很好:

library("shiny")
ui <- fluidPage(
  fluidRow(
    column(
      width = 6,
      lapply(
        X = 1:6,
        FUN = function(i) {
          sliderInput(inputId = paste0("d", i), label = i, min = 0, max = 10, value = i)
        }
      )
    ),
    column(
      width = 6,
      verbatimTextOutput(outputId = "test")
    )
  )
)
server <- function(input, output){

  vals <- reactiveValues()

  lapply(
    X = 1:6,
    FUN = function(i){
      observeEvent(input[[paste0("d", i)]], {
        vals[[paste0("slider", i)]] <- input[[paste0("d", i)]]
      })
    }
  )

  output$test <- renderPrint({
    reactiveValuesToList(vals)
  })
}
shinyApp(ui = ui, server = server)

编辑 :对于以前版本的 Shiny ,在服务器中使用它(添加 assign):
lapply(
  X = 1:6,
  FUN = function(i){
    assign(
      paste0("obs", i),
      observeEvent(input[[paste0("d", i)]], {
        vals[[paste0("slider", i)]] <- input[[paste0("d", i)]]
      })
    )
  }
)

关于R Shiny : How to write loop for observeEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40038749/

相关文章:

r - 在R中使用randomForest输入类型不匹配错误

java - R.id.ImageButton 的值是多少?

performance - Perl 中的慢循环

c++ - 不同类型的for循环c++

r - 如何在 Shiny 的仪表板中扩展背景

r - tableHTML Shiny : show an image in a cell

r - (R) 如何强制替换公式中的矢量元素?

r - 访问 LightGBM 模型参数

r - 根据多个条件更改数据表行的颜色

r - 如何在 R 中下载 .xlsx 文件并将数据加载到数据帧中?