Rで空のCSVファイルを読み込むとエラーが出てしまう場合の対処方法
例えば、複数のCSVファイルがあって、それをまとめて処理したいとしましょう。
"001.csv"は、
taro,60
hanako,100
ichiro,90
...
"002.csv"は
jiro,50
keiko,70
...
みたいな感じでたくさんのCSVファイルがあって、それぞれを集計したいとか、全部をマージしたいとか、そんな場合。
以下のようなコードで処理しようとするんじゃないでしょうか、
普通は上記でうまくいくんですが、たまに変なファイルが混じってたりする。
例えば、空のCSVファイルとか。
すると、
以下にエラー read.table(file = file, header = header, sep = sep, quote = quote, :
入力中には利用可能な行がありません
というエラーメッセージが出て、処理が中断してしまいます。
人名と点数のデータみたいなものだと空のファイルなんてのは考えにくいですが、「複数の画像から顔検出して、検出位置の座標をCSVで出力」みたいな場合だと、不検出の場合は空のファイルができあがっている、なんてことはよくあります。
そういう場合の対処方法としては、try関数を使うと便利です。
try関数で囲んでおくと、エラーが出ても止まりません。エラーが出たかどうかは、resに設定されていますので、if文で処理を分けてやればOKですね。
silent=Fに変えると、発生したエラーメッセージを表示させる(処理は継続される)こともできます。
"001.csv"は、
taro,60
hanako,100
ichiro,90
...
"002.csv"は
jiro,50
keiko,70
...
みたいな感じでたくさんのCSVファイルがあって、それぞれを集計したいとか、全部をマージしたいとか、そんな場合。
以下のようなコードで処理しようとするんじゃないでしょうか、
普通は上記でうまくいくんですが、たまに変なファイルが混じってたりする。
例えば、空のCSVファイルとか。
すると、
以下にエラー read.table(file = file, header = header, sep = sep, quote = quote, :
入力中には利用可能な行がありません
というエラーメッセージが出て、処理が中断してしまいます。
人名と点数のデータみたいなものだと空のファイルなんてのは考えにくいですが、「複数の画像から顔検出して、検出位置の座標をCSVで出力」みたいな場合だと、不検出の場合は空のファイルができあがっている、なんてことはよくあります。
そういう場合の対処方法としては、try関数を使うと便利です。
try関数で囲んでおくと、エラーが出ても止まりません。エラーが出たかどうかは、resに設定されていますので、if文で処理を分けてやればOKですね。
silent=Fに変えると、発生したエラーメッセージを表示させる(処理は継続される)こともできます。
コメント
コメントを投稿