L oop для двух кодов и двух функций в r - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть два кода для всех моих образцов.

cr1 = MEDIPS.seqCoverage(file = "1.bam", pattern = "CG", BSgenome = BSgenome, extend = extend, shift = shift, uniq = uniq)
MEDIPS.plotSeqCoverage(seqCoverageObj=cr1, type="pie", cov.level = c(0, 5, 10, 20, 30), main="cr1")

Тогда

cr2 = MEDIPS.seqCoverage(file = "2.bam", pattern = "CG", BSgenome = BSgenome, extend = extend, shift = shift, uniq = uniq)    
MEDIPS.plotSeqCoverage(seqCoverageObj=cr2, type="pie", cov.level = c(0, 5, 10, 20, 30), main="cr2")

Я не хочу повторять код снова и снова 100 раз. Я пробовал некоторые циклы for, но они не работают, потому что "Файл i.bam не найден в ...". Ну, я не очень хорош в этом. Кто-нибудь может мне помочь?

Так мой код выглядит следующим образом:

for(i in 1:100){
  cr[i] = MEDIPS.seqCoverage(file = paste0(as.character(i),".bam"),
                             pattern = "CG", BSgenome = BSgenome, extend = extend, 
                             shift = shift, uniq = uniq)
  MEDIPS.plotSeqCoverage(seqCoverageObj=cr[i], type="pie", 
                         cov.level = c(0, 5, 10, 20, 30), main="cr",paste0(as.character(i)))
}

Чтение выравнивания бама 1.bam

Общее количество импортированных коротких чтений: 17254741

Расширение чтения ...

Создание объекта GRange ...

Сохранение не более 1 сопоставления чтения для одного и того же местоположения генома c.

Число оставшихся прочтений: 11148075

Загрузка длин хромосом для BSgenome.Hsapiens.UCS C .hg19 ...

Получить геном c позиции последовательности символов ...

Номер идентифицированного шаблона CG: 26752702

Расчет покрытия шаблона последовательности ...

Ошибка: объект "cr" не найден

Ответы [ 2 ]

1 голос
/ 20 февраля 2020

Я не уверен, что это то, что вы ищете, но вы все еще можете попробовать, где число аналогичных действий принимается за 100, т. Е.

list2env(setNames(lapply(paste0(seq(100),".bam"),
                         function(v) MEDIPS.seqCoverage(file = v, pattern = "CG", BSgenome = BSgenome, extend = extend, shift = shift, uniq = uniq)),
                  paste0("cr",seq(100))),
         envir = .GlobalEnv)

sapply(paste0("cr",seq(100)),function(v) MEDIPS.plotSeqCoverage(seqCoverageObj=get(v), type="pie", cov.level = c(0, 5, 10, 20, 30), main=v))
0 голосов
/ 20 февраля 2020

Убедитесь, что ваш рабочий каталог установлен правильно. «Файл i.bam не найден в ...» означает, что файл не находится в том же каталоге, в котором вы находитесь.

getwd()

покажет вам, в каком каталоге вы сейчас находитесь. Если файл в загрузках вы можете использовать

setwd()

, чтобы изменить каталог для загрузки для доступа к файлу.

Обновление из комментария

for(i in 1:100){
cr[i] = MEDIPS.seqCoverage(file = cat(paste0(as.character(i),".bam")),
pattern = "CG", BSgenome = BSgenome, extend = extend, 
shift = shift, uniq = uniq)

MEDIPS.plotSeqCoverage(seqCoverageObj=cr[i], type="pie", 
cov.level = c(0, 5, 10, 20, 30), main=cr[i])
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...