2016-11-26 9 views
1

私はファイルを読み込んで個別に操作するときに問題はありません。R複数のファイルをインポートして複雑な機能を実行します

chrY<-read.table('chrY.txt', sep ='', header=F) 
head(chrY) 
     V1 
1 4.514563 
2 4.543689 
3 4.553398 
4 4.533981 
5 4.495146 
6 4.514563 

私は数値に値のそれぞれを変換する必要があります。

そして私は、染色体のファイルのリストのためにこれを試してください:数値へ

temp = list.files(pattern="chr*.txt") 
for (i in 1:length(temp)) assign(temp[i], read.table(temp[i], sep ='', header=F)) 
> temp 
[1] "chr17.txt" "chr18.txt" 
[3] "chr19.txt" "chr1.txt" 
[5] "chr6.txt" "chrY.txt"  

変換:

for(i in temp){ 
    temp[i]<-as.numeric(temp[i]) 
} 

すべてのファイルの平均をプロットしてプロットしたい、

1インポートされたファイルをプロット結構です:次のようにそれらの全ての間の平均値をプロットで

plot(chrY.txt[,1]) 

私の試み:

for(i in length(temp)-1){ #index -1 such that iteration is not out of range 
x<-(temp[i][,1]+temp[i+1][,1])/length(temp) 
} 
plot(x) 

しかし平均-プロセスのために私は次のエラーを取得します:

Error in temp[i][, 1] : incorrect number of dimensions

Rでのforループよりも速い方法がありますか?これは練習走行であると私は潜在的に我々はlist内のファイルを読み、mean値を取得するためにlistlengthによって+と除算でReduceを使用することができます

+0

あなたは 'length(temp)-1'を持っていて、単なる値です。' seq(length(temp)-1) 'が必要かもしれません。最後のコードの第2の問題は' temp'ですオブジェクト名の 'vector'は、(コードの最初のブロックで行ったように)それを読んでからsummartionを実行しなければなりません。 – akrun

+0

ありがとう@akrunは 'seq()'をインクルードしましたが、同じエラー:あなたの指示の後半ではっきりすることができますか?私が見ることができる限り、最初のコードブロックは、2番目のブロックと同じ方法でベクターにアクセスしています... –

+0

これを読む必要があります。read.table(temp [i]、sep = ''、header = F) ' – akrun

答えて

0

にわたり平均にたくさんのファイルをインポートします

temp <- list.files(pattern="chr*.txt") 
lst <- lapply(temp, read.table, header=FALSE) 
Reduce('+', lst)/length(lst) 
関連する問題