如何动态分配反应对象的名称?

How to dynamically assign the name of a reactive object?

我有一个应用程序可以生成多个表,这些表的 ID 仅相差一个后缀数字。虽然我目前复制并粘贴我的大部分代码来创建所有这些面板,如下所示:

  #  Panel 1
  panel1Data <- reactive({panelData(1, input$hsyear1, input$panel1range)})

  output$panel1plot <- renderPlot({panelPlot(panel1Data(), 1)})

  #  Panel 2
  panel2Data <- reactive({panelData(2, input$hsyear2, input$panel2range)})

  output$panel2plot <- renderPlot({panelPlot(panel2Data(), 2)})

我想使用 lapply 或任何其他函数来使其更具动态性,这样我的代码就可以更轻松一些。我该怎么做?

您没有提供可重现的示例,因此我无法进行测试。我会做这样的事情:

panelsData <- lapply(1:2, function(i){
  hsyear <- paste0("hsyear", i)
  panelrange <- sprintf("panel%drange", i)
  reactive({
    panelData(i, input[[hsyear]], input[[panelrange]])
  })
})

lapply(1:2, function(i){
  id <- sprintf("panel%dplot", i)
  output[[id]] <- renderPlot({
    panelPlot(panelsData[[i]](), i)
  })
})

如果不起作用,请提供可重现的示例。