一気読み、ではなく一行づつ

Rのデータ読み込みはscan、read.tableなどなどがあるが、基本的に一気に読み込む。このため、でかいファイルを読み込むときなどに非常に困る。Rubyのように

file = File.open("test.txt", "r")
file.each{|line|
  # do something
}

というような処理ができない。例えば、csvファイルのようなもので、行についての平均を取りたい。しかし、すごいでかいファイルなので、一回行列にすると大変である。行ごとに読み込めれば、行列にする必要がない、という感じである。

ざーっとRの基本的な関数を見た感じだと、一行ごとに読み込むというような関数はなさそう。Rubyみたいな感じじゃなくてもいいので、例えば

scan("test.txt", f=function(x){ # do something })

のように無名関数を与えて処理のようなことができるとすごーーーくうれしいと思う。パッケージでそういうのあるのかなー?なければちょっとCとかで書いてやってみようと思う。たぶん、Rで大規模処理をしたいというときには必要になるだろうから。

というかTsukuba.R#5のときにid:sotarokに同じようなことができないか聞かれていた気がするw。