2016-10-11 20 views
0

シャイニーを学び始めました。素敵なシンプルなインターフェイスを試してみました。私はhttps://gist.github.com/4211337で見つけたコードを修正して下の最初のコードをまとめました。シャイニー - チェックボックスとフィルタリングデータの問題

次のように私が使用していたコードは次のとおりです。

library(shiny) 
library(DT) 

schedule<-read.csv("NBA_Schedule.csv") 
stats<-read.csv("2015_2016_Stats.csv") 

data_sets<-unique(schedule$Date) 
data_sets<-as.character(data_sets) 

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

    output$choose_dataset <- renderUI({ 
    selectInput("dataset", "Game Date (US Time)", as.list(data_sets)) 
    }) 

    output$choose_columns <- renderUI({ 
    if(is.null(input$dataset)) 
     return() 

    schedule_subset<-schedule[ schedule$Date %in% input$dataset, ] 
    schedule_subset$Game<-as.character(schedule_subset$Game) 

    checkboxGroupInput("columns", "Choose Games to Include", 
         choices = schedule_subset$Game, 
         selected = schedule_subset$Game) 
    }) 

    output$data_table <- DT::renderDataTable({ 
    if(is.null(input$dataset)) 
     return() 

    schedule_subset<-schedule[ schedule$Date %in% input$dataset, ] 
    teams_selected <- c(as.character(schedule_subset$VIS[schedule_subset$Game==input$columns]),as.character(schedule_subset$HOM[schedule_subset$Game==input$columns])) 

    if (is.null(input$columns)) 
     return() 

    stats<-stats[ stats$Tm %in% teams_selected, ] 

    stats 
    }) 
}) 

ui<-shinyUI(pageWithSidebar(

    headerPanel("2016/2017 NBA DFS (Draftstars & Moneyball) Data Summary"), 

    sidebarPanel(
    uiOutput("choose_dataset"), 

    uiOutput("choose_columns"), 
br(), 
a(href = "https://gist.github.com/4211337", "Original source code") 
), 

    mainPanel(
    DT::dataTableOutput("data_table") 
) 
)) 

shinyApp(ui = ui, server = server) 

時には、私は私がに問題はありません、以下のインターフェースを取得起動:今

Interface on Startup

を、コードの機能は、ティックボックスが選択されているチームでプレーする場合にのみ、このテーブルにチームを含めることになっています。開始時には現在5,463のエントリがありますが、これはまったく正しいものです。

しかし、いったんボックスの解除などを開始すると、テーブルのデータが面白い番号を返すようになります。ボックスを個別に選択すると、正しい数の行がテーブルに表示されます。つまり、Knicks vキャバリアーズは1767、Spurs v Warriorsは1913、Jazz v Blazersは1783です。

Incorrectly Showing No Results

または私は最初と最後のマッチを選択した場合、私は唯一のキャバリアーズvのニックスのための1767の結果を得る:私は下の2つの試合を選択した場合は、その表は結果を返しません。 tickbox選択の

Incorrect Results

他の組み合わせは、同様の誤った結果を与えます。

誰かが私のコードでこの問題を解決して解決できるようにしてくれれば幸いです。

+0

「NBA_Schedule.csv」と「2015_2016_Stats.csv」へのリンクがありますか?リンクがなければ正しく再現できません。私の推測では、 'DT :: renderDataTable()'関数でエラーが発生していますが、それでも検証する必要があります。 – nilsole

+1

csvファイルは、ドロップボックスフォルダ内のにあります。 – Morts81

+0

私はDT :: renderDataTable()関数を使用しました。なぜなら、フィルタリングと検索が可能なテーブルが必要だったからです。 – Morts81

答えて

1

これで問題は解決しますか?私はそれを再現することができ、今は正しい結果を表示するようです。 (正しい:schedule_subset$Game %in% input$columns

  • 不正確なサブセット基準:
  • 不正なデータ操作 (正しい:stats_subset<-stats[stats$Tm %in% teams_selected,]

    output$data_table <- DT::renderDataTable({ 
        if(is.null(input$dataset)) 
         return() 
        schedule_subset<-schedule[ schedule$Date %in% input$dataset, ] 
        teams_selected <- c(as.character(schedule_subset$VIS[schedule_subset$Game %in% input$columns]), 
             as.character(schedule_subset$HOM[schedule_subset$Game %in% input$columns])) 
        if (is.null(input$columns)) 
         return() 
        stats_subset<-stats[ stats$Tm %in% teams_selected, ] 
        stats_subset 
        }) 
    

    問題はによって引き起こされているように見えました。

+0

これは完璧に動作します、ありがとうございます。非常に高く評価。 – Morts81

関連する問題