2017-11-29 18 views
1

でなければならない私はshinydashboardでダイナミックなプロットに基づいて、selectorInputを作成したいが、私はプロットを作成したいとき、私はエラーを取得する:ここでエラー:最初の引数は、データフレームや共有データ

First argument, data , must be a data frame or shared data.

は、私のコードの一部です。私は、データのサブセットとplotly入力としてそれらを使用しようとすると、サーバーの一部です:

data_sub = reactive({ 
data_sub_temp = df[df$market == input$market_selector,] 
return(data_sub_temp) 
    }) 


    output$market_plot <- renderPlotly({ 
    plot_ly(
    data = data_sub, 
    x = ~ created, 
    y = ~ pax, 
    group_by = ~ type, 
    color = ~ type, 
    type = "scatter", 
    mode = "lines+markers", 
    hoverinfo = 'text', 
    text = ~ paste('Year:', created, 
       '</br> </br> Clients: ', pax) 
) 
    }) 

データセットがロードされ、UI & Serverコードの部分の前に前処理されます。 UIの&の前にサブセット化されたデータセットを使用すると、このコードが機能し、data_subパーツが追加されたときに動作しません。なにか提案を?ありがとう

+0

問題は、プロットが入力に対して反応しないため、想定されているときにデータを取得できないことがあります。代わりに 'eventHandler'を使うことを考えましたか? – Barbara

答えて

2

dataframeの部分はreactiveですが、プロットはありません。代わりにeventHandlerを使用してみてください。この場合、actionButtonをui(おそらくsidebarPanel)に追加し、サーバにreactiveの部分を付けずにeventHandlerを追加する必要があります。 以下のコード。

UI

actionButton(
     inputId = "submit_loc", 
     label = "Submit") 

サーバー

observeEvent(
    eventExpr = input[["submit_loc"]], 
    handlerExpr = { 

data_sub <- df[df$market == input$market_selector,] 

output$market_plot <- renderPlotly({ 
    plot_ly(
    data = data_sub, 
    x = ~ created, 
    y = ~ pax, 
    group_by = ~ type, 
    color = ~ type, 
    type = "scatter", 
    mode = "lines+markers", 
    hoverinfo = 'text', 
    text = ~ paste('Year:', created, 
       '</br> </br> Clients: ', pax) 
) 
    }) 

}) 

は試してみて、私はこれが動作するかどうかを知ってみましょう。