在Shiny中,可以将数据帧用作selectizeInput中的选择吗?

时间:2018-06-23 11:16:17

标签: r shiny selectize.js

selectizeInput中的选择是否可能是数据帧中的行?如果是这样,返回的数据将是所选行的项目列表吗?我一直无法完成这项工作。在下面的代码中,cityInput有效,因为选择是一个字符向量;但是locationInput无效,选择框中的项目列表为空。

这是常见的情况,其中用户输入需要根据多列中的值进行选择以确定唯一行。在下面的示例中,不同的城市具有相同的名称,并且使用州来唯一地确定位置。将两列粘贴在一起是一种解决方案,但是在复杂情况下,这种方法会变得混乱。

library(shiny)

locations <- data.frame(City=c("Ames", "Beaumont", "Beaumont", "Portland", "Portland"),
                        State=c("IA", "CA", "TX", "ME", "OR"))

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectizeInput("cityInput", "City", choices=NULL, selected=NULL),
      selectizeInput("locationInput", "Location", choices=NULL, selected=NULL)
    ),
    mainPanel("Main Panel")
  )
)

server <- function(input, output, session) {
  updateSelectizeInput(session, 'cityInput',
              choices = locations$City,
              server = TRUE
  )
  updateSelectizeInput(session, 'locationInput',
              choices = locations,
              server = TRUE
  )
}

shinyApp(ui, server)

1 个答案:

答案 0 :(得分:0)

显然,selectizeInput需要将data.frame的列称为valuelabel

然后显示位置信息:

library(shiny)

locations <- data.frame(value=c("Ames", "Beaumont", "Beaumont", "Portland", "Portland"),
                        label=c("IA", "CA", "TX", "ME", "OR"))


ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      selectizeInput("cityInput", "City", choices=NULL, selected=NULL),
      selectizeInput("locationInput", "Location", choices=NULL, selected=NULL)
    ),
    mainPanel("Main Panel")
  )
)

server <- function(input, output, session) {

  updateSelectizeInput(session, 'cityInput',
                       choices = locations$value,
                       server = TRUE
  )
  updateSelectizeInput(session, 'locationInput',
                       choices = locations,
                       server = TRUE
  )
}

shinyApp(ui, server)