前提・実現したいこと
ruby初学者です。
csv
1 2 A B C D E F G 3A 0 0 0 0 0 1 1 4B 0 0 0 0 0 1 0 5C 0 0 0 1 0 1 0 6D 0 0 1 0 1 0 1 7E 0 0 0 1 0 0 0 8F 1 1 1 0 0 0 1 9G 1 0 0 1 0 1 0
rubyで上記のような0,1のみで構成されたcsv(test.csv)データを読み込み、2つの値を比較し、両方とも1ならnCountをカウントアップ。どちらか一方が1ならdCountをカウントアップ。両方とも0なら処理を行わない、といった処理を行いたいです。
下記ソースコードのような処理を行った際、if文の条件が反映されずnCount=0,dCount=0が毎回出力されます。
条件にdataset[i][k],dataset[j][k]を設定していることがいけないのかなと思うのですが、解決法を調べているうちに頭が混乱してしまい、手詰まりになってしまいました。
アドバイスをいただければと思います。よろしくお願いいたします。
また、何か補足情報が必要な場合は教えていただければ幸いです。
該当のソースコード
ruby
1 2require 'csv' 3 4dataset = CSV.read('../test.csv', headers: false) 5 6nCount = 0 7dCount = 0 8 9(1..dataset[0].length-1).each do |i| 10 (1+i..dataset[0].length-1).each do |j| 11 (1..dataset[0].length-1).each do |k| 12 13 # dataset[i][k]とdataset[j][k]に格納された2つの値を比較したい 14 # p "(#{dataset[i][k]},#{dataset[j][k]})" 15 16 if dataset[i][k] == 1 && dataset[j][k] == 1 17 nCount += 1 18 elsif dataset[i][k] == 1 && dataset[j][k] == 0 || dataset[i][k] == 0 && dataset[j][k] == 1 19 dCount += 1 20 else 21 next 22 end 23 24 25end 26 p "nCount:#{nCount} dCount:#{dCount}" 27 p "------" 28 end 29 30 end
補足情報(FW/ツールのバージョンなど)
ruby2.4.2
開発環境 Atom
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/27 09:59