我使用lapply和biomart来提取3个不同物种的同源物。我还需要提取所有同源的目标I,我还希望将lapply用于目标I,以使我的代码更有效率。到目前为止,我拥有的代码如下:
加载Biomart:
library(biomaRt)设置物种向量
species <- c("hsapiens", "mmusculus", "ggallus")为所有物种建立到ensembl的连接
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自动为我更改物种的效率高。
发布于 2018-05-01 01:21:13
我找到了一个解决方案:
target_id <- lapply(species[-1], 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 = all_homologues[[paste0(s)]][paste0(s, "_homolog_ensembl_gene")],
mart = ensembl[[paste0(s)]]))https://stackoverflow.com/questions/50086915
复制相似问题