Цикл по функции R - PullRequest
       50

Цикл по функции R

0 голосов
/ 02 августа 2020

У меня есть функция в R, которая получает файл .vcf и анализирует его.

Например,

x <- "file1.vcf"

file1.parsed <- parse_vcf_alt1(x)

У меня 177 файлов .vcf в папке.

Они выглядят как этот файл

https://www.dropbox.com/s/lcdmk57sy3dxexp/file1.vcf?dl=0

Я хочу передать каждый из этих файлов .vcf, один за другим, в функцию parse_vcf_alt1 и получить из него проанализированный файл.

Делать это вручную очень сложно.

Как я могу автоматизировать это в R?

Этот код дает результат

lapply(dir(), function(f) { if grep('vcf', f) { parse_vcf_alt1(f) }})

, но я не знаю, как сохранить или записать вывод для каждого проанализированного vcf отдельно с собственным именем.

> dput(frame)

 structure(list(), .Names = character(0), row.names = integer(0), class = "data.frame") > 

1 Ответ

1 голос
/ 02 августа 2020
frame <- data.frame()
lapply(dir(), function(f) { if(grep('vcs', f)) { frame[f] <- parse_vcf_alt1(f) }})
write.csv(frame, 'filename.csv')

dir возвращает список файлов, grep проверяет их имя и вызывает parse_vcf, если оно совпадает. frame [f] назначает его столбцу фрейма данных, после чего его можно получить, используя, скажем, фрейм $ vcs.hd1.vcf или любое другое имя файла. Наконец, write.csv запишет ваши результаты в filename.csv в текущем каталоге.

...