R闪亮-条件面板不显示所有元素
我无法理解R闪亮-条件面板不显示所有元素,r,shiny,R,Shiny,我无法理解conditionalPanel()的一些奇怪行为。根据用户输入,应显示部分不同的消息。在任何情况下都应显示一个元素。见示例: ## Only run this example in interactive R sessions if (interactive()) { ui <- fluidPage( sidebarPanel( selectInput("option", "Select option", c("A",
conditionalPanel()
的一些奇怪行为。根据用户输入,应显示部分不同的消息。在任何情况下都应显示一个元素。见示例:
## Only run this example in interactive R sessions
if (interactive()) {
ui <- fluidPage(
sidebarPanel(
selectInput("option", "Select option",
c("A", "B", "C"),
selected = "B"
)
),
mainPanel(
uiOutput("test0"),
uiOutput("test1")
)
)
server <- function(input, output) {
output$msg <- renderText("Some text")
output$test0 <- renderUI({
conditionalPanel(
condition = "input.option == 'B' || input.option == 'C'",
verbatimTextOutput("msg"),
wellPanel(h4("Are you sure you don't want to select A?")))
})
output$test1 <- renderUI({
conditionalPanel(
condition = "input.option == 'A'",
verbatimTextOutput("msg"),
wellPanel(h4("Good choice!")))
})
}
shinyApp(ui, server)
}
##仅在交互式R会话中运行此示例
if(interactive()){
ui为什么不将它们合并到同一个输出中呢
output$test0 <- renderUI({
list(
verbatimTextOutput("msg"),
conditionalPanel(
condition = "input.option == 'B' || input.option == 'C'",
wellPanel(h4("Are you sure you don't want to select A?"))),
conditionalPanel(
condition = "input.option == 'A'",
wellPanel(h4("Good choice!")))
)
})
output$test0为什么不将它们合并到同一个输出中呢
output$test0 <- renderUI({
list(
verbatimTextOutput("msg"),
conditionalPanel(
condition = "input.option == 'B' || input.option == 'C'",
wellPanel(h4("Are you sure you don't want to select A?"))),
conditionalPanel(
condition = "input.option == 'A'",
wellPanel(h4("Good choice!")))
)
})
output$test0您不能让两个输出共享相同的ID。但是,您可以为两个不同的输出定义相同的render
函数,您的解决方案是什么。只需为逐字输出
分配不同的ID,并为两个输出分配一个render
函数即可
ui <- fluidPage(
sidebarPanel(
selectInput("option", "Select option",
c("A", "B", "C"),
selected = "B"
)
),
mainPanel(
uiOutput("test0"),
uiOutput("test1")
)
)
server <- function(input, output) {
output$msg1 <- output$msg2 <- renderText("Some text")
output$test0 <- renderUI({
conditionalPanel(
condition = "input.option == 'B' || input.option == 'C'",
verbatimTextOutput("msg1"),
wellPanel(h4("Are you sure you don't want to select A?")))
})
output$test1 <- renderUI({
conditionalPanel(
condition = "input.option == 'A'",
verbatimTextOutput("msg2"),
wellPanel(h4("Good choice!")))
})
}
shinyApp(ui, server)
ui您不能让两个输出共享相同的ID。但是,您可以为两个不同的输出定义相同的render
函数,在您的情况下,解决方案是什么。只需为逐字输出
分配不同的ID,并为这两个输出分配一个render
函数即可
ui <- fluidPage(
sidebarPanel(
selectInput("option", "Select option",
c("A", "B", "C"),
selected = "B"
)
),
mainPanel(
uiOutput("test0"),
uiOutput("test1")
)
)
server <- function(input, output) {
output$msg1 <- output$msg2 <- renderText("Some text")
output$test0 <- renderUI({
conditionalPanel(
condition = "input.option == 'B' || input.option == 'C'",
verbatimTextOutput("msg1"),
wellPanel(h4("Are you sure you don't want to select A?")))
})
output$test1 <- renderUI({
conditionalPanel(
condition = "input.option == 'A'",
verbatimTextOutput("msg2"),
wellPanel(h4("Good choice!")))
})
}
shinyApp(ui, server)
ui我认为问题在于您定义了两个具有相同id的逐字输出
s。可能shiny的默认行为忽略了第二个?我认为问题在于您定义了两个具有相同id的逐字输出
s。可能shiny的默认行为忽略了第二个?