2015-12-31 4 views
6

ファイルの2行目が空で、列名が読み込まれないようです。私は、ヘッダーやスキップなどのスイッチを使って演奏してきましたが、それを動作させることはできません。data.table fread空行を無視する方法

ファイルの2行目が空の場合、この事実を無視して最初の行を列名として読み込む方法はありますか?

2行目は空である:

> fread('c1 c2\n\n1 2\n3 4\n') 

    V1 V2 
1: 1 2 
2: 3 4 

二行目が空でない:

> fread('c1 c2\n1 2\n3 4\n') 
    c1 c2 
1: 1 2 
2: 3 4 
+0

@VasilyAは、あなたの質問を再開しますが、それはこれはしません。あなたが受け入れた答えが以下の回答よりも若いため、重複していることを明確にしてください。 – Jaap

+1

@VasilyA何らかの方法であなたがそれを閉じなければならないことに同意するならば、それをただのままにしておきます。だから、あまりにも多くの二重引用符は、そのようにマークされていないし、何とかして何らかの形でリンクする方がいいです...この場合、2年間起こったように。皆さんが二重引用符を閉じた後に行くことによって、あなたはそのようなリンクの作成をさらに消極的にしています。とにかく考える価値がある。 – Frank

+0

私は二重引用符をマーキングすることが必要で有用な仕事であることに絶対に同意し、それを消滅させたくありませんでした。私はただのSOのルールと伝統の専門家ではないので、私は2つのうちの1つを選択するロジックが何であるか尋ねました。あなたのお時間をありがとうございました、そして、不必要な洪水を作ってごめんなさい。 –

答えて

2

回避方法:freadでファイルを読み取り、次に最初の行のみを読み取るために、いくつかの他のツールを使用しそれを正しく列名として追加します。

library(data.table) 
library(readr) 

str_data <- 'c1 c2\n\n1 2\n3 4\n' 
dt <- fread(str_data) 

df.header <- read_delim(str_data, delim = " ", n_max = 0) 
setnames(dt, names(df.header)) 

> dt 
    c1 c2 
1: 1 2 
2: 3 4 
+2

@Jim Greenあなたの問題を解決した場合、回答の1つを受け入れることを検討してください。 – paljenczy

5

data.table(1.9.8+)の現在のバージョンでは、この問題を解決すると思われるblank.lines.skip引数を追加します。

fread('c1 c2\n\n1 2\n3 4\n',blank.lines.skip = TRUE) 
# c1 c2 
# 1: 1 2 
# 2: 3 4 
関連する問題