lapply 使用 biomart 的问题
Issue with lapply using biomart
我试图在提取所有人类基因时使用lapply更改物种名称。
我仍在学习如何使用 lapply,我不知道我做错了什么。
到目前为止我有:
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:
species_genes <- lapply(species, function(s) getBM(attributes = c("ensembl_gene_id",
"external_gene_name"),
filters = "biotype",
values = "protein_coding",
mart = paste0(s, "_ensembl")))))
它给我一条错误消息:
Error in martCheck(mart) : You must provide a valid Mart object. To
create a Mart object use the function: useMart. Check ?useMart for
more information.
这应该可以解决问题:
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
参数需要 class Mart
而不是 string
的对象
class(ensembl_ggallus)
#output
[1] "Mart"
attr(,"package")
[1] "biomaRt"
通过使用
paste0("ensembl_", s)
你得到一个字符串,例如:
"ensembl_hsapiens"
base
函数 get
按名称搜索环境中的对象。
get("ensembl_hsapiens")
identical(get("ensembl_hsapiens"), ensembl_hsapiens)
#output
TRUE
我试图在提取所有人类基因时使用lapply更改物种名称。
我仍在学习如何使用 lapply,我不知道我做错了什么。
到目前为止我有:
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:
species_genes <- lapply(species, function(s) getBM(attributes = c("ensembl_gene_id",
"external_gene_name"),
filters = "biotype",
values = "protein_coding",
mart = paste0(s, "_ensembl")))))
它给我一条错误消息:
Error in martCheck(mart) : You must provide a valid Mart object. To create a Mart object use the function: useMart. Check ?useMart for more information.
这应该可以解决问题:
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
参数需要 class Mart
而不是 string
class(ensembl_ggallus)
#output
[1] "Mart"
attr(,"package")
[1] "biomaRt"
通过使用
paste0("ensembl_", s)
你得到一个字符串,例如:
"ensembl_hsapiens"
base
函数 get
按名称搜索环境中的对象。
get("ensembl_hsapiens")
identical(get("ensembl_hsapiens"), ensembl_hsapiens)
#output
TRUE