首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用lapply和biomart更改两个变量

如何使用lapply和biomart更改两个变量
EN

Stack Overflow用户
提问于 2018-04-29 21:08:41
回答 1查看 77关注 0票数 0

我使用lapply和biomart来提取3个不同物种的同源物。我还需要提取所有同源的目标I,我还希望将lapply用于目标I,以使我的代码更有效率。到目前为止,我拥有的代码如下:

加载Biomart:

代码语言:javascript
复制
library(biomaRt)

设置物种向量

代码语言:javascript
复制
species <- c("hsapiens", "mmusculus", "ggallus")

为所有物种建立到ensembl的连接

代码语言:javascript
复制
ensembl_hsapiens <- useMart("ensembl", 
                            dataset = "hsapiens_gene_ensembl")
ensembl_mmusculus <- useMart("ensembl", 
                         dataset = "mmusculus_gene_ensembl")
ensembl_ggallus <- useMart("ensembl",
                           dataset = "ggallus_gene_ensembl")  

获取人类基因

代码语言:javascript
复制
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检索到了这些同源

代码语言:javascript
复制
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来运行它。到目前为止,我尝试的内容如下:

代码语言:javascript
复制
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))))

我可以让它正常工作,如下所示:

代码语言:javascript
复制
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自动为我更改物种的效率高。

EN

回答 1

Stack Overflow用户

发布于 2018-05-01 01:21:13

我找到了一个解决方案:

代码语言:javascript
复制
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)]]))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50086915

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档