web-dev-qa-db-ja.com

read.tableを使用したテキストファイルの読み取り

id列とname列を含むテキストファイルがあり、それをRのデータフレームに読み取ろうとしています。

d = read.table("foobar.txt", sep="\t")

しかし、何らかの理由で、多くの行がマージされます-たとえば、私のデータフレームの500行目には、次のようなものが表示されます

row 500: 500 Bob\n501\tChris\n502\tGrace

[つまり、元のテキストファイルの行数がたとえば5000行である場合、テーブルのサイズは1000行2列になります。]

私はこれを何度も経験しました。誰が問題が何であるか、またはそれを修正する方法を知っていますか?

19
Ruld

From ?read.table:データ列の数は、入力の最初の5行(または5行未満の場合はファイル全体)、またはcol.namesが指定されている場合はその長さから決定され、長いです。 fillまたはblank.lines.skipがtrueの場合、これはおそらく間違っている可能性があるため、必要に応じてcol.namesを指定します。

そのため、おそらくデータファイルはクリーンではありません。より具体的にすると、データのインポートに役立ちます。

d = read.table("foobar.txt", 
               sep="\t", 
               col.names=c("id", "name"), 
               fill=FALSE, 
               strip.white=TRUE)

正確な列を指定し、fill=FALSEは2列のデータフレームを強制します。

32
ayman