首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >交互更改selectInput选项

交互更改selectInput选项
EN

Stack Overflow用户
提问于 2013-04-23 23:26:24
回答 4查看 30.3K关注 0票数 31

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

理想情况下,我想创建一个搜索函数,如下所示

我现在的想法是向global.R.传入一个表,其中包含所有合作伙伴公司及其in的列表。然后,将textInput作为搜索变量传入,并在服务器端执行搜索。然而,我迷失在如何将searchResults传递回selectInput面板上的UI中?

我当前的代码:

ui.R

代码语言:javascript
复制
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

代码语言:javascript
复制
  shinyServer(function(input, output) {

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

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

global.R

代码语言:javascript
复制
partners<- read.csv("partnersList.csv", fill=TRUE)

partnersList就是这样的格式

代码语言:javascript
复制
    name            id 
 ------------------
    McDonalds        1
    Wendy's          2
    Bestbuy          3 
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-24 00:46:55

您需要使UI具有响应性。我还没有对此进行测试(也缺少相关数据),但我认为应该可以正常工作。在server.R add中:

代码语言:javascript
复制
output$selectUI <- renderUI({ 
selectInput("partnerName", "Select your choice", searchResult()[,1] ),
})

ui.R中,将selectInput替换为:

代码语言:javascript
复制
htmlOutput("selectUI")
票数 31
EN

Stack Overflow用户

发布于 2013-11-23 16:29:31

在Shiny版本0.8 (我已经测试过了)中,在server.R中添加以下内容:

代码语言:javascript
复制
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中更改任何内容。

票数 7
EN

Stack Overflow用户

发布于 2013-04-26 01:26:26

Rstudio的JC回复:

当然可以,只需使用textInput作为搜索字符串,并使用renderUI/ to输出来创建动态selectInput。然后,代码的其余部分可以依赖于selectInput的值。(确保在读取selectInput值时检查NULL或其他值,因为它一开始就没有值。)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16173325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档