2016-04-23 9 views
0

ここでは簡単な問題があると知っていますが、それを得ることはできません。私は、各.txtファイルを独自のdata.frameにするために、複数の.txtファイルを用意しています。問題は、独自のユニークな変数名例えば複数のテーブルを読み込んでそれぞれを独自のdata.frameとして保存する

で各.txtファイル名で読み取ることができることに関しては来る:

例えば
path = "dir" #my directory 
filenames <- list.files(path) 

for (i in 1:length(filenames)) 
    { 

    ID <- filenames[i] 
    ID <- paste(ID, "average_table", sep = "_") 

    read.table(filenames[i], header=TRUE) # error about "cannot open connection" and "cannot open file ID: no such file or directory" 

    } 

、私はsub1.txt、sub2.txtを持っている場合は、 sub3.txt ...私は単にdata.frameとしてそれぞれを読み込み、最後に "average_table"が追加された.txtファイルの変数名を持っています(例えば、最初のループはsub1.txt sub1_average_tableのdata.frame変数につながります)。

私はlapplyを使用しましたが、これはもちろん私が望むものではないリストを作成します。それに対応するdata.frameの名前を.txtファイル名にしながら、各ファイルを読み込む最も良い方法は何ですか?ありがとうございました。

+1

なぜ 'filenames [i]'と 'file'引数の両方を使用していますか?また、リストを必要としない場合は、何をしたいですか?リストがここに行く最善の方法です。 'sapply(filenames、read.table、header = TRUE)'を実行すると、データフレームの名前付きリストが作成されます。名前は、彼らが来たファイル名である –

+0

ファイルの使用について申し訳ありません、それは間違いでした。各.txtファイルを独自のdata.frameとしてRにインポートすることを望んでいました。最終的にこれらの異なるデータフレームを作成し、個々のdata.frames要素の平均を含む新しいデータフレームを作成しました。 – pdhami

+0

"反リスト"の感想を再考する必要があります。リストは、複数のデータフレームを整理して作業するのに最適な方法です。この点に関する強い動機付けについては、次の回答を参照してください。[data.framesのリストを作成する方法](http://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data -frames/24376207#24376207) – lmo

答えて

0

assignを使用すると、求めている解決策を得ることができます。

また:read.tableは ファイルを見つけることができなかったという問題を取り除くためには、あなたが開きたいファイルの名前を使用してpath を組み合わせることfile.pathを使用する必要があります。 (貴方の現在のソリューション は、アクティブな作業ディレクトリ内のファイルのread.table見えます。)レコードの

path = "dir" #my directory 
filenames <- list.files(path) 

result_names <- structure(
    .Data = gsub(
     pattern = "\\.txt", 
     replacement = "_average_table", 
     x = filenames), 
    .Names = filenames) 


for (.file in filenames) { 
    assign(
     x = result_names[.file], 
     value = read.table(
      file = file.path(path, .file), 
      header = TRUE), 
     envir = .GlobalEnv) 
} 

:コメントで述べたように、私は、sapplyに基づくソリューション を使用することがはるかに良いことだと思います@リチャード・スクリブンの その解決策はグローバルワークスペースに1つのオブジェクトを追加するだけです。 何らかの理由で1つの特定のデータフレーム を調べたい場合は、サブセットを使用することができます。

関連する問題