web-dev-qa-db-ja.com

Rのfreaddata.table

ファイルをdata.tablesオブジェクトに読み取るために、Rで fread 関数を使用しています。

ただし、ファイルを読み取るときに、#で始まる行をスキップしたいのですが、それは可能ですか?私はfreadのドキュメントでそれについての言及を見つけることができませんでした。

14
Dnaiel

現在はありませんが、リストに載っています。

上部の#行は、30行を超える長さのヘッダーを形成していますか?

もしそうなら、それは前に出てきて、解決策は:

fread("filename", autostart=60)

ここで、60は、読み取られるデータのブロック内にあるように選択されています。

?freadから:

行の自動開始で区切り文字が見つかると、列の数が決定されます。次に、ファイルは自動開始からその数の列を持たない行が見つかるまで逆方向に検索されます。したがって、最初のデータ行が検出され、人間が読める形式のバナーは自動的にスキップされます。この機能は、すべてが一貫したサイズのバナーを持っているとは限らないファイルのセットをロードする場合に特に役立ちます。 skip> 0に設定すると、autostart = skip + 1を設定し、上向きの検索ステップをオフにすることで、この機能をオーバーライドします。

デフォルトのautostart=30は、あなたのケースでは少しだけ上げる必要があるかもしれません。

または、skip=nまたはskip="string"が役立ちます:

-1(デフォルト)の場合、行の自動開始から開始して以下で説明する手順を使用して、最初のデータ行を見つけます。 skip> = 0は、自動開始を無視し、行skip + 1を最初のデータ行(または通常のheader = "auto" | TRUE | FALSEによる列名)として使用することを意味します。 skip = "string"は、ファイル内の "string"(たとえば、列名行の部分文字列)を検索し、その行から開始します(パッケージgdataのread.xlsに触発されています)。

12
Matt Dowle

freadは、次のように、このような行を除外するパイプコマンドから読み取ることができます。

fread("grep -v '^#' filename")
14
malcook