如何在Shiny中调用选择名称而不是值?

时间:2018-07-19 16:08:13

标签: r input shiny output shinydashboard

我在仪表板上工作,有时我需要调用输入的选择名称,而有时需要调用输入的名称,但我只知道如何获取后者。有没有办法打电话给第一个?

这是一个最小的可重现示例:

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
    header = dashboardHeader(),
    sidebar = dashboardSidebar(),
    body = dashboardBody(
        selectInput(
            "input",
            h5("The output should give the choice name instead of it's value"),
            choices=c(
                "Name 1" = 1,
                "Name 2" = 2,
                "Name 3" = 3
            )
        ),
        textOutput("output")
    )
)

server <- function(input, output, session) {
    output$output <- renderPrint({paste(input$input)})  
}

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:2)

我认为最简单的方法是预先创建带有选择项和相应名称的data.frame,然后使用它来查找所选输入的名称。下面给出一个工作示例,希望这会有所帮助!

library(shiny)
library(shinydashboard)

choices_df = data.frame(
  names = c('Name 1', 'Name 2', 'Name 3'),
  id = seq(3)
)

ui <- dashboardPage(
  header = dashboardHeader(),
  sidebar = dashboardSidebar(),
  body = dashboardBody(
    selectInput(
      "input",
      h5("The output should give the choice name instead of it's value"),
      choices= setNames(choices_df$id,choices_df$names)
    ),
    textOutput("output")
  )
)

server <- function(input, output, session) {
  output$output <- renderPrint({paste(choices_df$names[choices_df$id==input$input])})  
}

shinyApp(ui = ui, server = server)