Выберите файлы с одинаковыми базовыми именами, используя R - PullRequest
0 голосов
/ 06 июня 2018

Можно ли выбрать файлы с одинаковыми базовыми именами (uniq) из всех файлов в каталоге.Я был в состоянии получить список всех файлов из каталога.

fastq.files <- list.files(path = rawdatapath, pattern = c("(.fastq.gz|.fq.gz|.fastq|.fq)$"), full.names = TRUE)
fastq.files

И файлы будут примерно такими в каталоге:

t1_R1.fq
t1_R2.fq
t2_R1.fq
t2_R1.fq

Вот база uniqимя t1 и t2

Ниже приведен эквивалент bash.

#Shell Script:

#!bin/bash

for i in $(ls *.fastq | rev | cut -c 14- | rev | uniq)

do 

bowtie2 --very-sensitive -p16 --rg-id ${i} -x cprefseqs -1 ${i}_R1_001.fastq -2 ${i}_R2_001.fastq  -S $i.sam

done

1 Ответ

0 голосов
/ 06 июня 2018

Если все ваши файлы имеют одинаковый формат, вы можете использовать lapply и strsplit, чтобы получить все уникальные базовые имена

x <- file.names()
 [1] "t1_R1.fq" "t1_R2.fq" "t2_R1.fq" "t2_R1.fq"

#splits each string into a list using "_" as a delimiter and returns the first element
f <- lapply(strsplit(x, "_"), "[", 1)

f <- unique(unlist(f))
 [1] "t1" "t2"

res <- lapply(f, function(x) list.files(pattern=x))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...