在闪亮的应用程序的两个或多个列中排列textInput元素

时间:2018-10-07 19:51:47

标签: r shiny textinput

Shiny GUI现在看起来如图所示。 我想优化 sidebarPanel 中两列或更多列中(> 30) textInput 元素的空间和排列。

如何使用 textInput 元素设置两列-是否可以使用表类型?

如何更改 textInput高度,我可以看到只能编辑'width'?

如何优化textInput元素的排列方式:即元素之间的距离,字体大小等?

optimisation of textInput elements arrangment

1 个答案:

答案 0 :(得分:1)

代码显示了两列和15行(30个textInputs)侧边栏设计。基本上,您编写了一个函数来为一行生成UI,然后使用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]])
    })
  }
)