最初我创建了这个漂亮的接口,它接受一个参数“公司id”和“日期”,但这里有一个问题:大多数人不知道我们工作的公司的id,只知道他们的名字,即(McDonalds,Radioshack)。
理想情况下,我想创建一个搜索函数,如下所示

我现在的想法是向global.R.传入一个表,其中包含所有合作伙伴公司及其in的列表。然后,将textInput作为搜索变量传入,并在服务器端执行搜索。然而,我迷失在如何将searchResults传递回selectInput面板上的UI中?
我当前的代码:
ui.R
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(),
),server.R
shinyServer(function(input, output) {
#subTable
searchResult<- reactive({
subset(partners, grepl(input$nameSearch, partners$name))
})
output$searchResults <- renderTable({
searchResult[,1]
})global.R
partners<- read.csv("partnersList.csv", fill=TRUE)partnersList就是这样的格式
name id
------------------
McDonalds 1
Wendy's 2
Bestbuy 3 发布于 2013-04-24 00:46:55
您需要使UI具有响应性。我还没有对此进行测试(也缺少相关数据),但我认为应该可以正常工作。在server.R add中:
output$selectUI <- renderUI({
selectInput("partnerName", "Select your choice", searchResult()[,1] ),
})在ui.R中,将selectInput替换为:
htmlOutput("selectUI")发布于 2013-11-23 16:29:31
在Shiny版本0.8 (我已经测试过了)中,在server.R中添加以下内容:
shinyServer(function(input, output, session) {
observe({
# This will change the value of input$partnerName to searchResult()[,1]
updateTextInput(session, "partnerName",
label = "Select your choice",
value = searchResult()[,1])
})
})现在,shinyServer中的函数有了额外的参数session。
如果不需要更改标签,则可以跳过该标签。
您不需要在ui.R中更改任何内容。
发布于 2013-04-26 01:26:26
Rstudio的JC回复:
当然可以,只需使用textInput作为搜索字符串,并使用renderUI/ to输出来创建动态selectInput。然后,代码的其余部分可以依赖于selectInput的值。(确保在读取selectInput值时检查NULL或其他值,因为它一开始就没有值。)
https://stackoverflow.com/questions/16173325
复制相似问题