Я использовал lapply вместе с biomart для извлечения гомологов для 3 разных видов. Мне также нужно извлечь целевые идентификаторы для всех гомологов, и я надеялся также использовать lapply для целевых идентификаторов, чтобы сделать мой код более эффективным. Код, который у меня есть, приведен ниже:
Загрузка Biomart:
library(biomaRt)
Установить видовой вектор
species <- c("hsapiens", "mmusculus", "ggallus")
Установить соединение с ансамблем для всех видов
ensembl_hsapiens <- useMart("ensembl",
dataset = "hsapiens_gene_ensembl")
ensembl_mmusculus <- useMart("ensembl",
dataset = "mmusculus_gene_ensembl")
ensembl_ggallus <- useMart("ensembl",
dataset = "ggallus_gene_ensembl")
Получить человеческие гены
hsapien_PC_genes <- getBM(attributes = c("ensembl_gene_id", "external_gene_name"),
filters = "biotype",
values = "protein_coding",
mart = ensembl_hsapiens)
ensembl_gene_ID <- hsapien_PC_genes$ensembl_gene_id
Получить гомологи, но исключить людей, так как они уже были получены с использованием видов [2: 9]
all_homologues <- list()
all_homologues <- lapply(species[2:9], function(s) getBM(attributes = c("ensembl_gene_id",
"external_gene_name",
paste0(s, c("_homolog_ensembl_gene",
"_homolog_associated_gene_name"))),
filters = "ensembl_gene_id",
values = c(ensembl_gene_ID),
mart = ensembl_hsapiens))
Здесь я сталкиваюсь с проблемами, я не знаю, как установить ensembl_gene_id для каждого вида и использовать lapply для его запуска. То, что я пробовал до сих пор, ниже:
target_id <- list()
target_id <- lapply(species, function(s) getBM(attributes = c("ensembl_gene_id",
"external_gene_name",
"hsapiens_homolog_associated_gene_name",
"hsapiens_homolog_perc_id"),
filters = "ensembl_gene_id",
values = c(all_homologues[[]][["ensembl_gene_id"]]),
mart = get(paste0("ensembl_", s))))
Я могу заставить его работать как обычно:
target_id[["mmusculus"]] <- getBM(attributes = c("ensembl_gene_id",
"external_gene_name",
"hsapiens_homolog_associated_gene_name",
"hsapiens_homolog_perc_id"),
filters = "ensembl_gene_id",
values = c(all_homologues[["mmusculus"]]$ensembl_gene_id),
mart = ensembl_mmusulus)
target_id[["ggallus"]] <- getBM(attributes = c("ensembl_gene_id",
"external_gene_name",
"hsapiens_homolog_associated_gene_name",
"hsapiens_homolog_perc_id"),
filters = "ensembl_gene_id",
values = c(all_homologues[["ggallus"]]$ensembl_gene_id),
mart = ensembl_ggallus)
Но это не так эффективно, как заставить r автоматически менять вид для меня