2016-12-22 11 views
2

readr::read_csvを使用して末尾の区切り文字を含むCSVファイルを読み込むと、列名が不足しているという警告が表示されます。これを再現するための短い例のCSVファイルの内容は次のとおりです(example.csvというファイルに次のコードを格納する)警告:readr :: read_csvの末尾の区切り文字を無視する

A,B,C, 
2,1,1, 
14,22,5, 
9,-4,8, 
17,9,-3, 

注各行の末尾にコンマ。今、私は

read_csv("example.csv") 

でこのファイルをロードする場合、私は次の警告を得る:私は明示的に

read_csv("example.csv", col_types=cols_only(A=col_integer(), 
              B=col_integer(), 
              C=col_integer())) 

私はまだ取得してわずか3列をロードしたい場合でも

Missing column names filled in: 'X4' 

を警告メッセージ。

これは予期された動作ですか、またはread_csvに指定した列以外のすべての列を無視すると言われる方法がありますか?または、この(明らかに不正な形式の)CSVを整理するもう1つの方法があるので、末尾の区切り文字は削除/無視されますか?

+0

問題を示す小さな例を追加できますか?警告は何らかの形で出力に影響を及ぼしますか、それとも単なるメッセージですか? – aosmith

+0

これは単なる警告メッセージですが、 'cols_only'でもすべてのカラムがインポートされているように見えるのは奇妙です。質問を編集して問題を示す小さなサンプルのCSVファイルを追加しました。 – cbrnr

答えて

3

私はあなたができるとは思わない。

:ファイルが読み込まれているように私はドキュメントで見ることができるものから、 cols_only()あなたがすでにロードされているRオブジェクトのためである

しかし、data.tableライブラリからfread()機能を使うには、特定の列名を選択することができます

DT <- fread("filename.csv", select = c("colA","colB"))

2

エラーメッセージのある別の例を示します。

> read_csv("1,2,3\n4,5,6", col_names = c("x", "y")) 
Warning: 2 parsing failures. 
row # A tibble: 2 x 5 col  row col expected actual   file expected <int> <chr>  <chr>  <chr>  <chr> actual 1  1 <NA> 2 columns 3 columns literal data file 2  2 <NA> 2 columns 3 columns literal data 

# A tibble: 2 x 2 
     x  y 
    <int> <int> 
1  1  2 
2  4  5 

ここは修正/ハックです。このSOFリンクも参照してください。 Suppress reader parse problems in r

> suppressWarnings(read_csv("1,2,3\n4,5,6", col_names = c("x", "y"))) 
# A tibble: 2 x 2 
     x  y 
    <int> <int> 
1  1  2 
2  4  5 
+0

この[ブログ投稿](http://romainfrancois.blog.free.fr/index.php?post/2009/05/20/Disable-specific-warnings)では、特定の警告のみを捕捉する方法について説明しています。この特定の警告を抑制するだけで便利です。 – nevrome

関連する問題