最初,我创建一个带有参数“company id”和“date”的 Shiny 界面,但是这里存在一个问题:大多数人不知道我们与之合作的公司仅凭其名称即ID(McDonalds,Radioshack) 。

所以我想理想地创建这样的搜索功能

我目前的想法是将包含所有合作伙伴公司及其ID的列表传递给global.R。然后将textInput作为搜索变量传递,并在服务器端执行搜索。但是,我迷路于如何将searchResults返回回selectInput面板上的UI?

我当前的代码:

用户界面

library(shiny)

shinyUI(pageWithSidebar(


  sidebarPanel(

    textInput("nameSearch", "Or, Search for company name", 'McDonald'),
    selectInput("partnerName", "Select your choice", list( "searchResults" ),
    br(),
    submitButton("Update View"),
    br(),

  ),

服务器
  shinyServer(function(input, output) {

  #subTable
  searchResult<- reactive({
    subset(partners, grepl(input$nameSearch, partners$name))
  })

  output$searchResults <- renderTable({
    searchResult[,1]
    })

全局
partners<- read.csv("partnersList.csv", fill=TRUE)

partnersList就是这种格式
    name            id
 ------------------
    McDonalds        1
    Wendy's          2
    Bestbuy          3

最佳答案

您需要使UI具有反应性。我还没有测试(也缺少数据),但我认为应该可以工作。在server.R中添加:

output$selectUI <- renderUI({
selectInput("partnerName", "Select your choice", searchResult()[,1] ),
})

并在ui.R中将selectInput替换为:
htmlOutput("selectUI")

09-25 18:18