2017-04-03 7 views
0

Rmarkdownに基本的なShiny dygraphを表示して、ネットワーク間をトグルしたいと思います。ここでは、データのサンプルがある:私はデータフレームのサブセット場合Shinyアプリケーションでxtsオブジェクトをフィルタリングする

> head(df) 
      nightTrips dayTrips network 
2014-05-03   0  16  1 
2014-05-04   0  5  1 
2014-05-05   0  8  1 
2014-05-06   0  3  1 
2014-05-07   0  0  1 
2014-05-08   0  3  1 
> nrow(df) 
[1] 2239 

network=1が、私は成功した単一のネットワークのためのdygraphをレンダリングすることができますdf

> head(test) 
      nightTrips dayTrips 
2014-05-03   0  16 
2014-05-04   0  5 
2014-05-05   0  8 
2014-05-06   0  3 
2014-05-07   0  0 
2014-05-08   0  3 

dygraph(test, main = "Network1") %>% 
    dySeries("nightTrips", label = "Night Trips") %>% 
    dySeries("dayTrips", label = "dayTrips") %>% 
    dyOptions(stackedGraph = FALSE) %>% 
    dyRangeSelector(height = 20) 

しかし、私はに私のデータをバインドする場合1つのデータフレーム、ネットワークを指定する余分な列netowrkを追加してxtsオブジェクトに変換し、Shinyサーバを起動しようとすると、フィルタがxtsオブジェクトに適用できないというエラーが表示されます:

enter image description here

この問題には、既知の回避策がありますか?ここで インライン光沢のあるアプリケーションのためのコードです:

```{r, echo = FALSE} 
shinyApp(

    ui = fluidPage(
    titlePanel("Sample Timeseries"), 

    sidebarLayout(
    sidebarPanel(
     uiOutput("networknames") 
    ), 
    mainPanel(
     dygraphOutput("networksgraph")) 
) 
), 

    server = function(input, output) { 

    data <- df 
    data <- as_xts(data, date_col = day) 


    output$networksgraph <- renderDygraph({ 
     if (is.null(input$networkname)) return (NULL) 
     filtered <- filter(data, 
          network == intput$networkname) %>% 
     dygraph() 

    }) 

    output$networknames <- renderUI({ 
    selectInput("networkname", "Select your Network", 
       choices = c(1,2,3)) 
    }) 
} 
) 

``` 
+0

なぜデータフレーム全体をxtsに変換するのですか? 'data $ network'は数値で続けるべきです。 –

答えて

0

xtsオブジェクトへdplyr機能を適用する問題が確認されたが、おそらく解決されていません。 dygraph()関数が時間インデックスと何の関係もない場合は、をfiltered <- filter(coredata(data), network == intput$networkname)のように単純に使用できます。それ以外の場合は、xtsdata.frameの間で前後に変換する必要があります。

関連する問題