もともと私はパラメータ「会社ID」と「日付」を受け取るこの光沢のあるインターフェイスを作成しますが、ここで問題が発生します。ほとんどの人は、ID、名前だけで作業している会社を知りません。 。
だから私は理想的にはこのような検索機能を作成したい
私の現在のアイデアは、すべてのパートナー企業とそのidのリストを含むテーブルをglobal.Rに渡すことです。次に、textInputを検索変数として渡し、サーバー側で検索を実行します。ただし、selectInputパネルのsearchResultsを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)
partnerListはこの形式です
name id
------------------
McDonalds 1
Wendy's 2
Bestbuy 3
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
で何も変更する必要はありません。
RstudioのJCからの返信:
もちろん、検索文字列にtextInputを使用し、renderUI/uiOutputを使用して動的なselectInputを作成します。その後、コードの残りの部分はselectInputの値に依存します。 (selectInput値は値なしで開始されるため、selectInput値を読み取るときは、NULLなどを必ず確認してください。)