2012-03-27 18 views
2

Rの複数のファイルを作業ディレクトリから読み込もうとしていて、各ファイルの7番目の行から読み込むのが好きです。あなたがしてください可能性が特定の行から始まるディレクトリ内の複数のファイルを読む

j = list.files()   
    d = lapply(j, read.csv) 

data = read.csv(file.choose(), skip = 6) 

または私はこのような複数のファイルを読むことができます:私は私が

私はこれで個々のファイルを読み取る方法を見つけたことを行うことができますどのように確認していません7行目から複数のファイルを読み込むにはどうすればいいですか?

+1

ヘルプページから、「... FUNへのオプションの引数」。あなたの例では、 'read.csv' == FUNなので、FUNを宣言した後に' lapply、j、read.csv、skip = 6 'のように追加の引数を渡すことができます。詳細は '?lapply'を参照してください。 – Chase

答えて

2

は、だけでなく、一般的なdata.frameに、リストにファイルを読み込みます。あなたの質問から、あなたがこれを望むかどうかは明らかではありません。とにかく私はそれを完全にするために追加します。

共通ファイルdata.frameの行がどのファイルに属していたかを特定できるように、ファイル名の列を追加することがよくあります。擬似コードでは、このようなものになります。私は、この擬似コードをテストしていない

library(plyr) 
files = list.files() 
data_df = ldply(files, read.csv, skip = 6) 

また
files = list.files() 
data_list = lapply(files, function(f) { 
    dat = read.csv(fname, skip = 6) 
    dat$fname = fname 
    return(dat) 
    }) 
data_df = do.call("rbind", data_list) 

を、あなたはにまったく同じことをして素晴らしいplyrライブラリを、使用することができます、まだいくつかの欠陥が存在する可能性があります。しかし、あなたは基本的な考えを得る。たとえば、ldplyが自動的にファイル名を列として追加しないという問題が考えられます。次に、lapplyを使用したときと同じように関数呼び出しを使用する必要があります。その場合、ldplydo.callステップを保存します。 plyrはプログレスバー(長いプロセスにはいい)と並列処理をサポートしています。

注:

  • 私はjdより説明的な名前が好き。これにより、コードを読みやすくなります。
+0

thatsは私が今持っている問題を多く説明するthats! :) – Achak

6

2つを組み合わせるだけです。あなたはlapplyに関数に名前付き引数を渡すことができます:lapplyを使用して

@ジェームズの答えに加えて
d <- lapply(j, read.csv, skip=6) 
+0

ありがとう、それは私が思ったthats、私は間違った何かを綴らなければならなかった、私は前にこれを試して、うまくいきませんでした:) – Achak

関連する問題