Ruby初学者のTIPS

Rubyを学び始めたので細かい学びの記録となります。

csvファイルの読み込み

csvファイルの読み込みについてライブラリのcsvが非常にわかりやすい。下記は名簿から年齢を抽出して平均を出す簡単な処理。

require "csv"

*scores = CSV.read('meibo.csv')
scores 

*ab = scores.transpose 

num  = ab[2].map(&:to_i)

puts num.inject{|sum, i| sum + i }/num.size

transposeは行と配列の入れ替え、injectは繰り返し計算用のメソッドでこちらはできることが多くちとわかりづらい(あとmapも)。map(&:to_i)の&の意味がさっぱりわからなかったがmapはブロックを引数にとるため&をつけることでブロックをオブジェクトとして扱っているような気がする。最初csvをreadするときにheaders: trueを入れていたところを一行目も読み込みたいのでfalseに変えても無反応だったので不思議だったがその場合はただ消すだけでいいらしい。まだ書き込み・出力の方は未着手なのでまた近日中に。