R:根据用户选择生成任意多个输出的循环
我想创建一个循环,根据用户的选择生成尽可能多的输出。 例如,如果用户选择10个模型,那么这10个模型的10个输出将出现 注意:我知道输入不能在UI中使用。我只是把它作为一个参考,让它更清楚地理解我在做什么 以下是我尝试过的:R:根据用户选择生成任意多个输出的循环,r,shiny,R,Shiny,我想创建一个循环,根据用户的选择生成尽可能多的输出。 例如,如果用户选择10个模型,那么这10个模型的10个输出将出现 注意:我知道输入不能在UI中使用。我只是把它作为一个参考,让它更清楚地理解我在做什么 以下是我尝试过的: shinyApp(ui= fluidPage(checkboxGroupInput('aa','model',c('a','b','c'), 'a'), for(i in 1:length(input$aa)){
shinyApp(ui= fluidPage(checkboxGroupInput('aa','model',c('a','b','c'), 'a'),
for(i in 1:length(input$aa)){
function(i){uiOutput(paste0('prob', i))}
}),
server = function(input, output){
for(i in input$aa){
assign(paste('output$prob',i,sep = ''),renderUI({paste('model',i)}))
}
})
谢谢。在
shinny
中,因为循环工作不好,最好使用lappy
。在下面,您可以找到使用lappy
的解决方案,您还可以查看
库(闪亮)
用户界面
library(shiny)
ui <- fluidPage(checkboxGroupInput('aa','model',c('a','b','c'), 'a'),
uiOutput("formulas")
)
server <- function(input, output, session) {
output$formulas <- renderUI({
lapply(input$aa, function(model) {
verbatimTextOutput(paste0("prob_", model))
})
})
observeEvent(input$aa, {
lapply(input$aa, function(model) {
output[[paste0("prob_", model)]] <- renderPrint({paste0("model ", model)})
})
})
}
shinyApp(ui, server)