我创建一个应用程序,允许用户多选的项目清单。对于每个选定的项目,我想有一个dateInput字段出现的项目名称(即,A / B / C)的旁边。
目前,我可以显示dateInput字段的项目中的任何一个,但不是多个(如下所示)
一旦多dateInputs项目列表旁边显示如下图所示:我不知道dateInput领域如何能很好地排队,因为他们似乎占用更多的空间比复选框列表,如下所示:
ui <- dashboardPage(
dashboardHeader(
title = ""
),
dashboardSidebar(
sidebarMenu(
menuItem("Projects", tabName = "tab1")
)
),
dashboardBody(
tabItems(
tabItem(tabName = "tab1",
fluidRow(h2("Projects"),
column(6,
checkboxGroupInput("Projects", "",
c("a", "b", "c")
)
),
column(4,
conditionalPanel(condition = "input.Projects == 'a' ||
input.Projects == 'b' || input.Projects
== 'c'", dateInput("proj_date", ""))
)
)
)
)
)
)
server <- function(input, output) {
}
shinyApp(ui, server)
我明白我需要把在JavaScript中的conditionalPanel的病情说法。请指教我应该如何正确的代码,并有任何及所有选定的项目显示一个或多个dateInput领域。
尝试uiOutput
:
library(shiny)
library(shinydashboard)
ui <- dashboardPage(
dashboardHeader(),
dashboardSidebar(
sidebarMenu(
menuItem("Projects", tabName = "tab1")
)
),
dashboardBody(
tabItems(
tabItem(tabName = "tab1",
fluidRow(h2("Projects"),
column(6, checkboxGroupInput("Projects", "", c("a", "b", "c"))),
column(4, uiOutput('dates'))))
)
)
)
server <- function(input, output) {
output$dates <- renderUI({
lapply(input$Projects, function(project) {
div(dateInput(paste0("proj_date_",project), paste("Project", project, "date")))
})
})
}
shinyApp(ui, server)