[英]How to change two variables using lapply and biomart
我已經用lapply和biomart來提取3種不同物種的同系物。 我還需要提取所有同源物的目標ID,並且希望也對目標ID使用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為我自動更改物種有效
我找到了解決方案:
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)]]))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.