Я выполняю код, в котором я беру один ген из списка генов, нахожу его ген Sentinel в Data1, а затем выбираю все строки с соответствующим идентификатором rssnp1 для гена в его строке Sentinel. Однако в настоящее время мой код запускает только один ген за раз, я пытаюсь запустить его, чтобы он перебирал каждый ген в моем списке генов в Data2, создавая либо 1 файл со всеми выходными данными, либо отдельные файлы на ген.
Мои данные выглядят так:
Данные1 (имя файла: loci):
Chr Start End rssnp1 Type gene
1 1244733 1244734 rs2286773 LD_SNP ACE
1 1257536 1257436 rs301159 LD_SNP CPEB4
1 1252336 1252336 rs2286773 Sentinel CPEB4
1 1252343 1252343 rs301159 LD_SNP CPEB4
1 1254841 1254841 rs301159 LD_SNP CPEB4
1 1256703 1267404 rs301159 LD_SNP CPEB4
1 1269246 1269246 rs301159 LD_SNP CPEB4
1 1370168 1370168 rs301159 LD_SNP GLUPA1
1 1371824 1371824 rs301159 LD_SNP GLUPA1
1 1372591 1372591 rs301159 LD_SNP GLUPA1
Данные2 (имя файла: genelist):
gene
CPEB4
GML
TBX2
PNKD
JMJD1C
SKI
MYH11
ACE
У меня также есть 3-й файл данных, который является классом, который был предсказан геном при машинном обучении керас (столбец меток 0-3 для каждого гена), и я добавляю этот столбец после извлечения данных для генов на этом этапе. Местоположение rssnp1.
Данные3 (имя файла: keraspredictions)
gene keras.prediction
CPEB4 2
GML 1
TBX2 1
PNKD 3
JMJD1C 0
SKI 1
MYH11 2
ACE 1
С этим я пытаюсь:
loci <-read.csv('genelocifilter.csv') #Data1
geneslist <-read.csv('genelist.csv') #Data2
keras <-read.csv('Keraspredictions.csv') #Machine learning prediction
getFromData1 <- function(geneFromData2 = NULL) {
if (is.null(geneFromData2)) return()
geneSentinelSNP <- (loci %>% filter(Type == "Sentinel" & gene == geneFromData2))$rssnp1
loci %>% filter(rssnp1 == geneSentinelSNP)
}
gene <- getFromData1(geneFromData2 = "CPEB4")
#if error here Type == Sentinel needs to be LD_SNP
gene_class <- left_join(gene, keras %>% select(gene, Keras.prediction) , by = "gene")
write.csv(gene_class, "./CPEB4.csv", row.names = FALSE)
Это работает для вывода:
Chr Start End rssnp1 Type gene Keras.prediction
1 1244733 1244734 rs2286773 LD_SNP ACE 1
1 1252336 1252336 rs2286773 Sentinel CPEB4 2
Как сделать так, чтобы это повторялось по каждому гену, а не по 1 во время, которое я называю вручную? Я новичок, поэтому не знаю, с чего начать с создания цикла for, любая помощь будет признательна.