2017-07-11 16 views
0

1) "C:/ Users/Me/Desktop/JUNETEST /"というディレクトリに48個のtar.gzファイルがあります。 ファイルの形式はすべて同じですが、各ファイルの時刻を表す数字は例外です(voa_20170601-110000.tar.gzではなくvoa_20170601-110000.tar.gz)インポートする必要がありますすべての48のファイルとファイルをuntarし、各 ".tar.gz"に同じ名前のデータファイルを取り出します。名前は "hit_data.tsv"です。それぞれの "hit_data.tsv"を要素として割り当てたい私のコードでは、48個のファイルすべてを正しくuntarするように見えます。rのループ内のデータフレームに列ヘッダーを割り当てる方法は?

しかし、問題はhit_data.tsvファイルを読むことです。すべての列を読み込もうとしますが、列がないので問題があります最初の列のみを読み込みます。 各ファイルを個別にプルする場合は、の列名を割り当てます(hit_da ta.tsv) Headersというベクトルの値。各ファイルは同じ列名であるため、ヘッダーベクトルは各hit_data.tsvに適用できます。私の質問は、どのようにループ中に各ファイルに列名を割り当てるのですか?または、「hit_data.tsv」ファイルのすべての列を読み込むようにコードを修正するにはどうすればよいですか?現在の状態で

次のコードは次のとおりです。

files <- list.files(path = "C:/Users/Reginald/Desktop/JUNETEST/",pattern = "tar.gz") 
VOA<-length(files) 

for (i in files){ 
    eval(parse(text = paste0("untar(\"C:/Users/Reginald/Desktop/JUNETEST/",i,"\",files=\"hit_data.tsv\")",sep=""))) 
    VOA[i] <- read_tsv("~/hit_data.tsv") 
    #VOA[i]<- as.data.frame(VOA[i]) 
    #colnames(VOA[i])<-Headers[1,] 
VOA.df <-do.call(rbind,VOA[i]) 

} 

答えて

0

私はあなたがreadrパッケージでread_tsvを使用していると思います。

それが事実である場合、あなたはループ

read_tsv('~/hit_data.tsv', col_names=Headers) 

のために、あなたの中に以下のコードを試してみてまた、あなたがしている機能を理解するためにhelp()を使用するか、パッケージのドキュメント(readr.pdf)を読み取るすることをお勧めしますを使用して。

+0

アドバイスのためのkitman0804に感謝しますが、col_namesはTRUEをとり、受け取ったエラーに応じて他のオブジェクトを偽りません。私は列名= FALSEまだ解決策を試みた。 – Reric

+0

問題を解決していただきありがとうございます! – Reric

+0

oops私はまだ1つの列だけを読んでいますが、少なくとも私はヘッダーのエラーを取得しません。何が間違っているかを調べるためにドキュメントをもっと読むでしょう。 – Reric

関連する問題