我想基于数字输入“行数”显示可变数量的输入。由于可能存在大量的行,因此我不想为每行使用一个条件面板,而是希望使用以下函数进行迭代:
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等)。
我现在想用变量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?
答案 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))
)
})
)
})
})
}