我正在尝试使用R Shiny中的switch
函数来分配值,并且我对波浪号有一个奇怪的问题。在下面的代码中,如果我在UI中选择“BAYAMÓN”,服务器上的switch函数会为x分配NULL,当它应该是5.另一方面,如果我使用if...else
结构,它可以工作(第一组注释行)。如果我将变量的值设置为“BAYAMÓN”并使用switch
,那么它也可以工作(第二组注释行)。我使用的是Shiny的最新版本。谢谢。
ui.R
library(shiny)
choices_Region <- c("ARECIBO" = "ARECIBO", "BAYAMÓN" = "BAYAMÓN", "CAGUAS" = "CAGUAS")
shinyUI(fluidPage(
titlePanel(h3("Test"), windowTitle = "Test"),
sidebarLayout (
sidebarPanel(
selectInput("select_Region", label = "Región", choices = choices_Region)
),
mainPanel(
tabsetPanel(
tabPanel("Debug", verbatimTextOutput("debug"))
)
)
)))
server.R
library(shiny)
shinyServer(function(input, output, session) {
output$debug <- renderPrint({
x <- switch(input$select_Region, "ARECIBO" = 4, "BAYAMÓN" = 5, "CAGUAS" = 6)
x # prints NULL if BAYAMÓN selected
# region <- input$select_Region
# x <- if (region == "ARECIBO") 4
# else if (region == "BAYAMÓN") 5
# else 6
# x # prints 5 if BAYAMÓN selected in ui
# region <- "BAYAMÓN"
# x <- switch(region, "ARECIBO" = 4, "BAYAMÓN" = 5, "CAGUAS" = 6)
# x # prints 5
})
})