我开发了一个使用闪亮的应用程序,允许用户输入他选择的行数和列数,然后相应地在主面板中显示相应数量的输入小部件。目前有1列和多行,它正在运行。
我的挑战是如果用户选择多于1列,则复制相同的内容,并且这些新列应该以矩阵形式与主面板中的现有窗口小部件相邻。
怎么做?
我的代码:
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel(title = "Adding input widgets horizontally and dynamically"),
sidebarLayout(
sidebarPanel(numericInput("rows","Input No. of rows",value = 5),
br(),
numericInput("col","input No of col",value = 1)),
mainPanel(uiOutput("plo"))
)
)
)
server <- function(input,output){
output$plo <- renderUI({
lapply(seq(input$rows),function(i){
numericInput(inputId = paste0("range",i),label = "col1",value = i)
})
})
}
shinyApp(ui,server)
答案 0 :(得分:2)
您可以以非常类似的方式执行此操作,使用另一个lapply
将内部lapply
包裹为column
。请尝试以下方法:
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel(title = "Adding input widgets horizontally and dynamically"),
sidebarLayout(
sidebarPanel(numericInput("rows","Input No. of rows",value = 5,min=1),
br(),
numericInput("col","input No of col",value = 1,min=1)),
mainPanel(uiOutput("plo"))
)
)
)
server <- function(input,output){
output$plo <- renderUI({
lapply(seq(input$col), function(j){
column(width=3,
lapply(seq(input$rows),function(i){
numericInput(inputId = paste0("range",i,"_",j),label = "col1",value = i)
})
)
})
})
}
shinyApp(ui,server)
希望这有帮助!