使用输入定义迭代

Using input to define iterations

我想定义 lapply 应该在 R-shiny 中交互进行的迭代次数。 到目前为止,将这个数字投入使用,同样会生成一个输出。 渲染这些输出也可以,但是迭代次数不行。

目前的代码如下所示:

ui<-fluidPage(
    numericInput(inputId = "maxk", label = "number of k's", value=5),
    actionButton(inputId="start",label="Start"),
    maxk<-5,

#Instead of this (maxk<-5), I would like write something to get maxk from the output

    lapply(1:maxk,function(k){
                        list(
                        uiOutput(paste("test_",k))
                        )
                            })
                )
server <- function(input, output, session){

    observeEvent(input$start,{
        maxk<-input$maxk

#And here something should be apply to get maxk into the correct way into the output I assume

        lapply(1:maxk,function(k){
        output[[paste("test_",k)]]<-renderText(k)   
        })
    })

    }
shinyApp(ui = ui, server = server)

我已尝试 RenderText(),但如果我尝试将其用作 lapply() 的输入,则会出现错误。

还有哪些其他可能性可以在服务器部分中获得可用于 ui 部分的数字输出?

我认为这应该可以满足您的需求。最终,你的 Shiny 代码越短越好! (也就是说,我确信有人可以找到更短的方法,但这行得通。)

ui <- fluidPage(
  numericInput(
    inputId = "maxk", 
    label = "number of k's", 
    value = 5
    ),
  verbatimTextOutput("k_output")
)

server <- function(input, output){

  calc <- reactive({
    lapply(
      1:input$maxk,
      function(k){
        paste0("test_", k)
        }
      )
    })

    output$k_output <- renderPrint(calc())

}

shinyApp(ui = ui, server = server)

希望对你有所帮助。