31

もともと私は、パラメーター「会社 ID」と「日付」を受け取るこの光沢のあるインターフェースを作成しましたが、ここで問題があります。ほとんどの人は、ID で仕事をしている会社を知らず、名前だけを知っています (McDonalds、Radioshack)。 .

だから私は理想的にはこのような検索機能を作成したい ここに画像の説明を入力

私の現在のアイデアは、すべてのパートナー企業とその ID のリストを含むテーブルを global.R に渡すことです。次に、textInput を検索変数として渡し、サーバー側で検索を実行します。しかし、selectInput パネルの UI に searchResults を戻す方法がわかりません。

私の現在のコード:

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(),

  ),

サーバー.R

  shinyServer(function(input, output) {

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

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

グローバル.R

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

partnerList はまさにこの形式です

    name            id 
 ------------------
    McDonalds        1
    Wendy's          2
    Bestbuy          3 
4

4 に答える 4

31

UI をリアクティブにする必要があります。私はこれをテストしていません(データも欠落しています)が、うまくいくはずです。加えserver.Rて:

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

selectInput を次のようにui.R置き換えます。

htmlOutput("selectUI")
于 2013-04-23T16:46:54.897 に答える
7

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-11-23T08:29:31.360 に答える
3

Rstudio の JC からの返信:

確かに、検索文字列に textInput を使用し、renderUI/uiOutput を使用して動的な selectInput を作成します。その後、残りのコードは selectInput の値に依存します。(値がない状態で開始されるため、selectInput 値を読み取るときに、NULL などを確認してください。)

于 2013-04-25T17:26:26.177 に答える