Команды не выполняются при запуске кода через систему в цикле for - PullRequest
0 голосов
/ 22 марта 2019

Я впервые создаю цикл for с двумя переменными.У меня есть набор образцов для секвенирования ДНК, которые я хочу пройти.Каждый набор данных имеет два файла, которые должны быть запущены одновременно.

Когда я просто запускаю систему (paste ()) в R без переменных цикла for, она работает просто отлично.Итак, я знаю, что проблема связана с самой петлей.Когда я запускаю скрипт ниже, я не получаю сообщение об ошибке, он запускается, но ничего не происходит.

Я явно что-то напутал.Я просто не знаю, куда идти отсюда.

for (j in list.files(pattern = "R1_001.trim.paired.fastq.gz")) {
  for (h in list.files(pattern = "R2_001.trim.paired.fastq.gz")) {
    outname=paste(substr(j, start=1, stop=7), sep= "")
    system(paste("docker run -v /path/:/path/ -w /path/ combinelab/salmon salmon quant -i /path/CanFam3.1_index -l A -1 ",j,"-2 ",h,"-o ",outname, ,sep="")
    )
  }
}

1 Ответ

1 голос
/ 23 марта 2019

Единственное, что я сразу увидел в представленном вами коде, это несколько пропущенных пробелов, которые могут вызвать наблюдаемое поведение.Вы также можете использовать paste0 вместо paste(...,sep=""), надеюсь, поможет следующее:

for (j in list.files(pattern = "R1_001.trim.paired.fastq.gz")) {
  for (h in list.files(pattern = "R2_001.trim.paired.fastq.gz")) {
    outname=substr(j, start=1, stop=7)
    system(paste0("docker run -v /path/:/path/ -w /path/ combinelab/salmon salmon quant -i /path/CanFam3.1_index -l A -1 ",j," -2 ",h," -o ",outname))
  }
}

РЕДАКТИРОВАТЬ

Получение character(0) в результате вашего *Команда 1011 * вне цикла for предполагает, что вы не сопоставляете файлы в wd с вашим шаблоном.

Если вы уверены, что файлы находятся в правильном wd или вы непосредственно задали wd в команде list.files (list.files(path = ".", pattern = NULL), вы можете попробовать комбинацию из упомянутых Сонни и Парфев приведенных выше комментариях запустите цикл for, заменив system на print, а также удалив спецификацию pattern в команде list.files. Это скажет вам, если вы получаете правильные строки докера (хотяпотенциально также могут быть распечатаны неверные файлы, которые вы можете впоследствии отфильтровать, потенциально обновив шаблон).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...