У меня есть несколько списков, соответствующих нескольким клеточным линиям. Каждый список содержит значения экспрессии около 5000 генов. Например
Gm12878 <- list('gene1'= 3.14, 'gene4' = 1.11, 'gene10'= 1111,...)
K562 <- list('gene4'= 8.1, 'gene20'= 0.11, 'gene31'= 100,...)
.
.
H1hESC <- list('gene1'= 5.1, 'gene31'= 1.11, 'gene200'= 10,...)
Имя клеточных линий содержится в другом списке с именем Cells. Структура Клеток
Cells[1] <- "Gm12878"
Cells[2] <- "K562"
.
.
Cells[5] <- "H1hESC"
В другом списке у меня есть названия всех генов. Например,
Genelist[1] <- "gene1"
Genelist[2] <- "gene2"
.
.
Genelist[15000] <- "gene150050"
Я хочу проверить, существует ли ген, то есть элемент Genelist (например, «gene10500»), в списке линий ячеек или нет.
Вот мой код:
Cells <- list("Gm12878","K562", "H1hESC")
for(i in 1:length(Genelist)){
for(j in 1:length(Cells)){
check_val <- eval(parse(text=paste(c(Cells[j],"$`", annotation_list[i],"`"), collapse = "")))
if(is.null(check_val)){
print("FALSE")
} else {
print(check_val)
}
}
}
К сожалению, выполнение кода занимает очень много времени, если Genelist очень длинный (в моем случае это около 155000). Любые предложения о том, как сократить время выполнения?