ファイルの行数を調べたい
Linuxだとwc使えばいいんだけど、Windowsだとどうしたらいいんだろうかと思って見つけたメーリングリスト。
比較的大きいファイルを扱うので、効率的に処理したいところ。
R.utilsパッケージのcountLines関数を使うか、Rtoolsに入ってるwc.exeを使うのがよさそうだ。
速度を比較すると明らかにwc.exeの方が早いな(平均で12倍程度)。。。
ただ、wcだと出力結果の文字列を捌かないとだめなのが面倒。
> library("R.utils") > library("microbenchmark") > file_name <- "hoge.csv" > microbenchmark( + countLines(file_name), + shell(paste0("c:/Rtools/bin/wc.exe -l ", file_name), wait=T, intern=T), + times=10) Unit: milliseconds expr min lq mean median uq max neval countLines(file_name) 8384.0527 8643.690 8754.1073 8675.3887 8921.362 9299.7692 10 shell(paste0("c:/Rtools/bin/wc.exe -l ", file_name), wait = T, intern = T) 703.1112 704.257 704.9833 704.6663 705.852 707.5927 10
readr::read_lines()という話ももらったが、こいつはcountLinesよりやや遅いレベルなので、却下awkはRではないのでこちらも却下。