我想在线进行几组输入,但我不知道提前多少。我见过所有类似的问题,但无济于事。 我的代码是这样的:
library(shiny)
ui <- fluidPage(
tags$head(
tags$style(type="text/css", ".inline label{ display: table-cell; text-align: left; vertical-align: middle; }
.inline .form-group{display: table-row;}")
),
uiOutput("out")
)
server <- function(input, output){
set.seed(1543)
num <- 1:runif(1, 1, 6)
show <- function(i){
tagList(
numericInput(i, paste(c(1:i), collapse = ""), value = 0),
selectInput(paste("text", i), "", choices = c("min", "max"))
)
}
output$out <- renderUI({
tags$div(class = "inline",
lapply(num, function (i) {
show(i)
})
)
})
}
shinyApp(ui = ui, server = server)
因此,当“ num”是随机的时,我试图为每个“ num”进行两个输入。但是selectInput出现在新行中。
如何为每个数字写一行(label-numericInput-selectInput)? 注意:每行的标签可以有不同的长度,因此框应正确对齐。
非常感谢!
答案 0 :(得分:0)
最简单的方法是在输入中添加style = "display: inline-block;vertical-align:top;"
,并在末尾添加换行符。
library(shiny)
ui <- fluidPage(
tags$head(
tags$style(type="text/css", ".inline label{ display: table-cell; text-align: left; vertical-align: middle; }
.inline .form-group{display: table-row;}")
),
uiOutput("out")
)
server <- function(input, output){
set.seed(1543)
num <- 1:runif(1, 1, 6)
show <- function(i){
tagList(
div(numericInput(i, paste(i), value = 0), style = "display: inline-block;vertical-align:top;"),
div(selectInput(paste("text", i), "", choices = c("min", "max")), style = "display: inline-block;vertical-align:top;"),
br()
)
}
output$out <- renderUI({
tags$div(class = "inline",
lapply(num, function (i) {
show(i)
})
)
})
}
shinyApp(ui = ui, server = server)