r Shiny-如何显示可变数量的数字输入

时间:2018-07-05 09:06:18

标签: r shiny

我想基于数字输入“行数”显示可变数量的输入。由于可能存在大量的行,因此我不想为每行使用一个条件面板,而是希望使用以下函数进行迭代:

ui <- fluidPage(
  lapply(1:3,function(iter1){
    fluidRow(
      column(2,
             h4(paste0("line", iter1))
      ),
      lapply(1:4,function(iter2){
        column(2,
               h4(paste0("Wind speed bin", iter2)),
               column(6, numericInput(paste0("v", iter1,"bin",iter2,"min"),"Vmin",5)),
               column(6, numericInput(paste0("v", iter1, "bin",iter2,"max"),"Vmax",6))
        )
      })
    )
  })  
)

上面的代码允许每行j在3行上显示4个风箱定义(numericInput:vjbin1min,vjbin1max,vjbin2min,vjbin2max等)。

Overview of sidebar layout

我现在想用变量bin_nb [line_nb]定义[行的箱数],如下所示:

lapply(1:bin_nb,function(iter1){...
lapply(1:line_nb,function(iter2){...

具有两个数字输入

numericInput("bin_nb","number of wind speed bins",value=4),    
numericInput("line_nb","number of lines",value=3)

我试图从服务器端获取值

output$bin_nb <- renderText(input$bin_nb)

并使用

lapply(1:textOutput("bin_nb"),function(iter1){...

这当然不起作用,因为请求了数值。如何定义和使用这两个数字变量bin_nb和line_nb?

1 个答案:

答案 0 :(得分:2)

根据BigDataScientist的评论,这是详细的解决方案:

ui <- fluidPage(
  numericInput("line_nb","number of lines",value=3),
  numericInput("bin_nb","number of wind speed bins",value=4),
  uiOutput("input_panel")
)

和服务器端:

server <- function(input, output) {
  output$input_panel <- renderUI({

    lapply(1:input$line_nb,function(iter1){
      fluidRow(
        column(2,
               h4(paste0("line", iter1))
        ),
        lapply(1:input$bin_nb,function(iter2){
          column(2,
                 h4(paste0("Wind speed bin", iter2)),
                 column(6, numericInput(paste0("v", iter1,"bin",iter2,"min"),"Vmin",5)),
                 column(6,numericInput(paste0("v", iter1, "bin",iter2,"max"),"Vmax",6))
          )
        })
      )
    })
  })    
}