4

一部はcsvで一部はタブ区切りですが、何らかの理由ですべてラベル付けされたファイル(私が作成したものではない)(私が作成したものではありません)があります(「.csv」)。したがって、Rでそれらを読み取ろうとすると、区切り記号を手動で指定する必要があります。破損したファイルを読み込む前に、これを確認する方法があるかどうかを誰かが知っている場合を除きます。

4

2 に答える 2

9

これを答えに入れるべきだった...

freadパッケージdata.tableの関数は、正しい区切り文字を推測しようとします。おそらく完璧ではありませんが、ほとんどの単純なケースを処理できるでしょう。

于 2013-10-15T17:18:03.840 に答える
6

セパレーターが通常正しいテストとしてこれを行うことができない限り、タブがデータに含まれる可能性は特にありません。

dat <- if( "\t" %in% strsplit(readLines("path/fil.csv", n=1)[1], split="")[[1]] ) { 
     read.table("path/fil.csv", sep="\t") }else{
     read.table("path/fil.csv", sep=",") }

(説明されているように、"\t" または "," のいずれかのケースのみを処理します。) テスト:

> dat <- if( "\t" %in% strsplit(readLines(textConnection("a\tb\tc\nd\te\tf"), n=1)[1], split="")[[1]] ) { 
+      read.table(textConnection("a\tb\tc\nd\te\tf"), sep="\t") }else{
+      read.table(textConnection("a,b,c\nd,e,f"), sep=",") }
> dat
  V1 V2 V3
1  a  b  c
2  d  e  f
于 2013-10-15T17:29:08.093 に答える