Код показывает дизайн боковой панели с двумя столбцами и 15 строками (30 текстовых входов).По сути, вы пишете функцию для генерации пользовательского интерфейса для одной строки, а затем просто вызываете ее снова и снова, используя lapply
для сколь угодно большого количества строк.Вы можете использовать этот подход для любого числа столбцов.
output$test
показывает, как можно извлечь значения из всех входных данных.
library(shiny)
textInputFUN <- function(uid) {
fluidRow(
column(6,
textInput(paste0("par_", uid), label = paste0("par_", uid))
),
column(6,
textInput(paste0("par_", uid+1), label = paste0("par_", uid+1))
)
)
}
input_rows <- 15
input_ids <- seq(1, input_rows*2, by = 2)
shinyApp(
ui = fluidPage(
sidebarLayout(
sidebarPanel(
lapply(seq_len(input_rows), function(x) {
textInputFUN(uid = input_ids[x])
})
),
mainPanel(
verbatimTextOutput("test")
)
)
),
server = function(input, output, session) {
output$test <- renderPrint({
sapply(paste0("par_", seq_len(input_rows*2)), function(x) input[[x]])
})
}
)