2017-08-24 15 views
-1

にループすると、すべてのファイルがRになります。実際には私はforループを作っていますが、実行するとすべてではなく1つのファイルにのみ適用されます。ところで、私のファイルにはヘッダがありません。同じディレクトリにあるすべてのファイルをR

+0

'[[I]]' – loki

+0

その後、どのようにファイルをループに出てみましょうか? – john

+0

イテレータ 'i'を使用して、繰り返しごとに新しいファイルを読み込みます。したがって、あなたはファイル*をループしますね。 – loki

答えて

0

[[を使用してサブセットをpeaksから取得します。ただし、ファイル名を使用して読み取った後は、データフレームとなり、ファイル名の参照はなくなります。したがって、あなたはただ[[i]]を取り除かなければなりません。たびに新しいファイル名を保持しているread.delim()内のイテレータiを使用することにより

for (i in filelist.coverages) { 
    peaks <- read.delim(i, sep='', header=F) 
    PeakSizes <- c(PeakSizes, peaks$V3 - peaks$V2) 
} 

、Rは、ループを通過するたびに、peaksは新しいファイルの内容を持っています。

0

コードでは、iが名前ファイルを参照しています。索引を代わりに使用してください。

そして、setwdを使用しないでください。list.filesfull.names = TRUEオプションを使用してください。そしてPeakSizesを事前に割り当てよう:PeakSizes <- numeric(length(filelist.coverages))

filelist.coverages <- list.files('K:/prostate_cancer_porto/H3K27me3_ChIPseq/', 
           pattern = 'island.bed', full.names = TRUE) 

##all 97 bed files 
PeakSizes <- numeric(length(filelist.coverages)) 
for (i in seq_along(filelist.coverages)) { 
    peaks <- read.delim(filelist.coverages[i], sep = '', header = FALSE) 
    PeakSizes[i] <- peaks$V3 - peaks$V2 
} 

をそれとも、単にsapplypurrr::map_dblを使用することができます:

そう

sapply(filelist.coverages, function(file) { 
    peaks <- read.delim(file, sep = '', header = FALSE) 
    peaks$V3 - peaks$V2 
}) 
関連する問題