2017-12-17 10 views
0

私は最終的にプロットをユーザー入力に反応させる方法を見つけました...残念ながら、ユーザーは今年の年の範囲、ゴルファー、コースを選択する必要があります。私は彼らがほんの一年とゴルファー、または彼らが望むなら年とコースだけでフィルタリングできるようにしたい。何かが記入されていなくてもプロットを返すように私のコードを修正するには?私はまだこれでかなり新しいですので、どんな助けも大いに評価されるでしょう!ありがとう!すべてのオプションが選択されている場合は、シャイニーのみでフィルタリングされます

は、私が実際にこれをテストすることはできませんコードのビットより多くを見ることなく、ヒストグラム

server <- function(input, output, session) { 

    updateSelectizeInput(session, inputId = 'golfer', choices = dkDatabase$Golfer, selected = "Woodland, Gary", server = TRUE) 
    updateSelectizeInput(session, inputId = 'course', choices = dkDatabase$Course, server = TRUE) 

    output$points <- renderPlot({ 
    dkDatabase %>% 
    filter(dkDatabase$Year >= input$year[1], 
     dkDatabase$Year <= input$year[2], 
     dkDatabase$Golfer == input$golfer, 
     dkDatabase$Course == input$course) %>% 
    ggplot(aes(dkPoints)) + geom_histogram(fill="green", colour = "black") + 
    xlab("DK Points") + 
    ylab("Events") 
    }) 
} 

答えて

0

を描画するために必要なサーバー・ロジックを定義し、それはいくつかの小さな変更で動作するはずです。 UIコードで

、あなたのデフォルトを設定する入力を選択:if文

selectInput(..., Choose = '') 

そして、サーバー側のコードでは、あなたがシングルを使用するならば(私の頭の上をオフに思い出すことができません追加引用符、二重引用符またはnullでテストそれらのすべてのアウトと1が動作するはずです):

if (input$golfer == '') { 
dkDatabase %>% 
filter(dkDatabase$Year >= input$year[1], 
     dkDatabase$Year <= input$year[2], 
     dkDatabase$Course == input$course) 
} 
else if (input$Course == ''){ 
dkDatabase %>% 
filter(dkDatabase$Year >= input$year[1], 
     dkDatabase$Year <= input$year[2], 
     dkDatabase$Golfer == input$golfer) 
} 
else { 
dkDatabase %>% 
    filter(dkDatabase$Year >= input$year[1], 
     dkDatabase$Year <= input$year[2], 
     dkDatabase$Golfer == input$golfer, 
     dkDatabase$Course == input$course) 
} 

output$points <- renderPlot({ 
    ggplot(aes(dkPoints())) + geom_histogram(fill="green", colour = "black") + 
    xlab("DK Points") + 
    ylab("Events") 
    }) 

私は年が上で入力されていない場合はどうするか対応していませんでしたが、私は何だろうが自動的に設定されています開始日と終了日にすべてのデータを含めることができます。ユーザーは必要に応じて変更できます。

+0

ありがとうアレックス、問題は私が "年"を選択し、ゴルファーを選び、コースを選ぶ必要があるということです。私は2つだけを選択し、3番目のオプションを空白のままにして、グラフを表示させたいと思っています。現在のところ、3つすべてを選択しなければ、プロットには何も表示されません。 –

+0

フィルタの1つが選択されていない場合、データはどのように表示されるべきですか?つまり、年が選択されていない場合は、すべての年を表示する必要がありますか?またはすべてのゴルファー?あなたはあなたの質問をロジックについてもう少し明確に更新できますか?この作業を行うには、サーバ側にif else文をインクルードする必要があるようです。ロジックが少し良くなったら、私の答えを更新します。 –

+0

いや、申し訳ありません...私は非常にこれで新しいことを言ったように。タイムフレームとゴルファーだけを選んだ場合は、ヒストグラムにdkPointsをすべてプロットする必要があります。現在、オプションがすべて入力された場合にのみヒストグラムが作成されます。選択されたオプションの数に関係なく、選択されたフィルタに基づいてdkPointsヒストグラムを表示できるようにします。それがもっと明確であるかどうかはわかりません。 –

関連する問題