我正在尝试动态地在selectInput中生成一个列表。我有一个sidebarPanel,我在其中声明了tabsetPanel。每个tabsetPanel都有不同的输出,我想在侧边栏中显示所有输出。因此,第一个选项卡的输出将是selectInput或者可能是2个selectInputs,而第二个选项卡则相同。
这是我在ui.R
中的sidebarPanel代码## ui.R
sidebarPanel(
tabsetPanel(
tabPanel("aZ", uiOutput("aToZPlayerList")),
tabPanel("byTeam", uiOutput("byTeamPlayerList"))
),
),.......
在server.R中,我写了以下内容:
## server.R
output$aToZPlayerList <- renderUI({
selectInput("alphabet", "Players A-Z", choices=aToZ, selected=0)
htmlOutput("List")
})
output$byTeamPlayerList <- renderUI({
selectInput("team", "Teams", choices=teamList, selected=0)
htmlOutput("List")
})
但这不起作用,因为sidebarPanel中没有呈现任何内容。我觉得自己错过了一些东西,但由于我对此很陌生,我还是没有想到它。
到目前为止,我还没有在这里或其他地方找到答案。有什么帮助吗?感谢。
答案 0 :(得分:0)
你不应该在一个uiOutput
下有两个小部件,我建议把它分开:
## ui.R
sidebarPanel(
tabsetPanel(
tabPanel("aZ", uiOutput("aToZPlayerList"), htmlOutput("List")),...
## server.R
output$aToZPlayerList <- renderUI({
selectInput("alphabet", "Players A-Z", choices=aToZ, selected=0)
})...
它会起作用。
[完整示例]
library(shiny)
fruits <- c("banana","raccoon","duck","grapefruit")
ui <- pageWithSidebar(
# Application title
headerPanel("Hello Shiny!"),
# Sidebar with a slider input
sidebarPanel(
tabsetPanel(
tabPanel("aZ", uiOutput("aToZPlayerList"), htmlOutput("List")),
tabPanel("byTeam", uiOutput("byTeamPlayerList"))
)),
# Show a plot of the generated distribution
mainPanel()
)
server <- function(input,output){
output$aToZPlayerList <- renderUI({
selectInput("alphabet", "Players A-Z", choices=c("A","B","C"), selected="A")
})
output$List <- renderUI({
HTML(paste(fruits))
})
output$byTeamPlayerList <- renderUI({
selectInput("team", "Teams", choices=c("A","B","C"), selected="B")})
}
runApp(list(ui=ui,server=server))