本文介绍了使用biomart的lapply问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在提取所有人类基因时,我试图用lapply更改物种名称.
I am trying to use lapply to change the species name when extracting all the human genes.
我仍在学习如何使用lapply,我无法弄清自己做错了什么.
I'm still learning how to use lapply, I cant work out what I'm doing wrong.
到目前为止,我有:
library(biomaRt)
我创建了集市:
ensembl_hsapiens <- useMart("ensembl",
dataset = "hsapiens_gene_ensembl")
ensembl_mmusculus <- useMart("ensembl",
dataset = "mmusculus_gene_ensembl")
ensembl_ggallus <- useMart("ensembl",
dataset = "ggallus_gene_ensembl")
设置物种:
species <- c("hsapiens", "mmusculus", "ggallus")
然后我尝试使用lapply:
I then try to use lapply:
species_genes <- lapply(species, function(s) getBM(attributes = c("ensembl_gene_id",
"external_gene_name"),
filters = "biotype",
values = "protein_coding",
mart = paste0(s, "_ensembl")))))
它给我一条错误消息,说:
It gives me an error message saying:
推荐答案
这应该可以解决问题:
species_genes <- lapply(species, function(s) getBM(attributes = c("ensembl_gene_id",
"external_gene_name"),
filters = "biotype",
values = "protein_coding",
mart = get(paste0("ensembl_", s))))
说明:
getBM
函数中的mart
参数需要一个Mart
类的对象,而不是string
the mart
argument in getBM
functions expects an object of class Mart
and not a string
class(ensembl_ggallus)
#output
[1] "Mart"
attr(,"package")
[1] "biomaRt"
使用
paste0("ensembl_", s)
您将获得一个字符串,例如:
you get a string such as:
"ensembl_hsapiens"
base
函数get
按名称在环境中搜索对象.
the base
function get
searches for an object in the environment by name.
get("ensembl_hsapiens")
identical(get("ensembl_hsapiens"), ensembl_hsapiens)
#output
TRUE
这篇关于使用biomart的lapply问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!