固定長データの読み込みについて過去の記事で紹介しました。例えば、固定長データの1行目とn行目が以下のようだとします。
1行目:aaabbccc
$\vdots$
n行目:aaabbcccdd
すなわち、最初の3文字が変数a、次の2文字が変数b、続き3文字が変数cという具合です。このとき、radrパッケージを使って読み込むとすれば
readr_fwd.rb
d <- read_fwf(datafilename.txt, fwf_widths(c(3, 2, 3, 2), col_names = c("a", "b", "c", "d")))
となるわけです。
例えば、変数dが、1~(n-1)行目までは現れず、n行目で初めて現れるとします。そうしたときに、nが1,000よりも大きいとき、readrパッケージでは(デフォルトで)最初の1,000行を使ってデータ形式を予測(guess)するため、変数dがうまく読み込めず、抜け落ちてしまうことがわかりました。
こんなエラーが出ます
Warning: *** parsing failures.
row col expected actual file
1000 d 1/0/T/F/TRUE/FALSE 3 'datafilename.txt'
この問題を回避するために、read_fwfのオプションで、guess_maxを指定してやると、うまくいくことがわかりました。たとえば、guess_maxを10,000とかにしてやるとうまくいきます。
readr_fwd_guess_max.rb
d <- read_fwf(datafilename.txt, fwf_widths(c(3, 2, 3, 2), col_names = c("a", "b", "c", "d")), , guess_max = 10000 )