R-使用biomaRt / getBM可以生成55,000+个基因的列表,而不是我在“值”下输入的数据框约15,000个基因

时间:2018-11-19 22:02:32

标签: r biomart

我已经从NIH GEO下载了大量的数据集,并试图将第一列中的Ensembl名称转换为MGI符号

我命名为SOD的表如下所示

SOD Data - Total rows = 15,396

我使用了以下代码:

setwd("C:/R/Project")
if (!requireNamespace("BiocManager", quietly = TRUE))
  install.packages("BiocManager")
BiocManager::install("biomaRt", version = "3.8")
library(BiocManager)
library(biomaRt)
SOD<-read.csv("Static Organoid Data.csv")
names_only<-data.frame(SOD[,1])
mart <- useMart(biomart = "ensembl", dataset = "mmusculus_gene_ensembl")
Gene_list <- getBM(attributes = c("ensembl_gene_id", "mgi_symbol"),
                   values     = names_only, 
                   mart       = mart)
View(Gene_list)

这将输出包含55,000行以上的合奏和MGI符号的列表。

我尝试将filter = "ensembl_gene_id添加到getBM函数中,但是输出有0行和0列。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:0)

您的集成体ID已版本化,这意味着它们具有.#的形式,而biomart中的集成体ID没有。要解决此问题,您需要按如下所示删除名称末尾的.#

names_only <- gsub("\\.*","",data.frame(SOD[,1]))
mart <- useMart(biomart = "ensembl", dataset = "mmusculus_gene_ensembl")
Gene_list <- getBM(attributes = c("ensembl_gene_id", "mgi_symbol"),
                   values     = names_only,
                   filter     = "ensembl_gene_id",
                   mart       = mart)