Я использую программное обеспечение для генетической интерпретации под названием SAIGE-GENE. Алгоритм выглядит так (полный алгоритм на https://github.com/weizhouUMICH/SAIGE/wiki/Genetic-association-tests-using-SAIGE#step-2--performing-the-region--or-gene-based-association-tests): он включает в себя ввод нескольких разных файлов с номерами хромосом в именах файлов (от 1 до 22).
SPAGMMATtest = function(
vcfFile = "",
vcfFileIndex = "",
vcfField = "DS",
groupFile ="",
savFile = "",
savFileIndex = "",
sampleFile = "",
idstoExcludeFile = "",
idstoIncludeFile = "",
rangestoExcludeFile = "",
rangestoIncludeFile = "",
chrom = "",
start = 1,
end = 250000000,
IsDropMissingDosages = FALSE,
minMAC = 0.5,
minMAF = 0,
maxMAFforGroupTest = 0.5,
minInfo = 0,
GMMATmodelFile = "",
varianceRatioFile = "",
SPAcutoff=2,
SAIGEOutputFile = "",
numLinesOutput = 10000,
IsSparse=TRUE,
......
Я не помещал все это здесь, поскольку это не относится к делу. Я ввожу в этот алгоритм несколько разных файлов и обычно называю свои файлы chr1_file_name.txt....chr22_file_name.txt.
Затем я использую цикл for в R для всего алгоритма, используя функцию вставки для ввода разных имен файлов по номеру хромосомы:
for(i in 1:22){SPAGMMATtest = function(
vcfFile = paste("chr",i,"_file_name.txt", sep=""),
vcfFileIndex = "",
vcfField = "DS",
savFile = "",
groupFile ="paste("chr",i,".group_file.txt", sep="")",
так далее
Это прекрасно работает, однако я подумал, что буду умнее и буду использовать трехзначное имя для имен моих файлов для этого эксперимента: chr001_file_name.txt...chr022_file_name.txt.
Мой предыдущий цикл теперь не работает, и если я изменю начало цикла на for(i in 001:022), он тоже не сработает.
Что я делаю не так и как это исправить, не переименовывая все мои файлы?
vcfFile = paste("chr",sprintf( "%03d", i),"_file_name.txt", sep=""),
отредактируйте: для более короткого кода вы можете использоватьpaste0()
и отбросить sep-аргумент... - person Wimpel   schedule 17.08.2020%03d
означает: преобразовать в три цифры, добавить ведущие нули, когда это необходимо.. так что 1 становится 001, 21 становится 021, а 201 остается 201. - person Wimpel   schedule 17.08.2020