如何在Shiny中获取SelectInput的选择值?

BeB*_*eBa 6 shiny

如何在SelectInpute中获得选择列表?

用户界面

selectInput(inputId = "select_gender", 
    label = "Gender",
    choices = c("Male","Female"),
    width = 150
)
Run Code Online (Sandbox Code Playgroud)

服务器

# Something like...

genders <- input$select_gender["choices"]

# So that the gender would be:

> genders

[1] Male Female
Run Code Online (Sandbox Code Playgroud)

mle*_*gge 2

根据Shiny 的范围规则:

中定义的对象与服务器函数定义之外global.R定义的对象类似app.R,但有一个重要区别:它们对于 ui 对象中的代码也是可见的。这是因为它们被加载到 R 会话的全局环境中;Shiny 应用程序中的所有 R 代码都在全局环境或其子环境中运行。

然而,这并不意味着定义app.R在UI和服务器端的对象不能同时使用,它们只是属于不同的环境。

例如:

library("shiny")
library("pryr")

# or in global.R
genders <- c("Male", "Female")
gen_env <- where("genders")
par_env <- parent.env(gen_env)

ui <- fluidPage(
  selectInput("shiny_gender", "Select Gender", choices = genders),
  verbatimTextOutput("selected_gender_index"),
  p("The `genders` object belongs to the environment:"),
  verbatimTextOutput("gen_env_print"),
  p("Which is the child of the environment:"),
  verbatimTextOutput("par_env_print")
)

server <- function(input, output) {
   output$selected_gender_index <- renderPrint({
     # use the 'genders' vector on the server side as well
     which(genders %in% input$shiny_gender)
   })

   output$gen_env_print <- renderPrint(gen_env)
   output$par_env_print <- renderPrint(par_env)
}

shinyApp(ui = ui, server = server)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述