R基础,实现ID转换
rm(list = ls())
options(stringsAsFactors = F)
a=read.table("ensembl.txt")#待转换的ID做成TXT文件,读入R
str_split(a$V1,"[.]")
#分割字符串,取a中叫V1的列,把去出列中的元素,
#根据点号进行分割,因为点号代表任何,所以按照其分割应该时加中括号
unlist(str_split(a$V1,"[.]"))
unlist(str_split(a$V1,"[.]",simplify=T))
#加入simplify=T,表示不返回list,而是matrix
a$ensemble_id=unlist(str_split(a$V1,"[.]",simplify=T))[,1]
#[,1]为取第一列的意思,分离然后取出的目的是因为后面需要用到此元素
library(org.Hs.eg.db)
g2s=toTable(org.Hs.egSYMBOL)
g2e=toTable(org.Hs.egENSEMBL)
b=merge(a,g2e,by="ensemble_id",all.x=T)
#a和g2e按照相同的元素ensemble_id关联
d=merge(b,g2s,by="gene_id",all.x=T)
#b和g2s按照相同的元素gene_id关联
d=d[order(d$V1),]#把d按照V1列进行排序
table(d$sensembl_id)[table(d$sensembl_id)>1]
#因为d为拼接的表格,可一个对应几个的问题,所以V1数量多余a,要先把其中重复的去掉
#table(d$sensembl_id)>1此命令意为sensembl_id列中计数大于1的
#table(d$sensembl_id)[ ]表示对于sensembl_id列中元素计数进行挑选
#table(d$sensembl_id)[table(d$sensembl_id)>1]的意义为挑选出计数中大于1的那些元素,意思重复的元素
d=d[!duplicated(d$v1),]#!duplicated去掉重复,从而把V1中所有的元素变成唯一
d=d[match(a$V1,d$V1),]#match意为以a的顺序来排列d
网友评论