最初,我创建一个带有参数“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")