Shiny GUI现在看起来如图所示。 我想优化 sidebarPanel 中两列或更多列中(> 30) textInput 元素的空间和排列。
如何使用 textInput 元素设置两列-是否可以使用表类型?
如何更改 textInput高度,我可以看到只能编辑'width'?
如何优化textInput元素的排列方式:即元素之间的距离,字体大小等?
答案 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]])
})
}
)