本系列主要定期集中记录一些实用的生信操作
1. 第一列作为行名,构建数值矩阵
假如我刚读取了一个表达谱矩阵gene_exp
,第一列为基因名
,其余列为基因表达量
> gene_exp
genes expression_1 expression_2
1 a 1 3
2 b 2 5
3 c 1 3
4 d 2 5
5 e 1 3
6 f 2 5
> str(gene_exp) # 看看每列的数据类型
'data.frame': 6 obs. of 3 variables:
$ genes : chr "a" "b" "c" "d" ...
$ expression_1: num 1 2 1 2 1 2
$ expression_2: num 3 5 3 5 3 5
然后就可以将第一列作为行名
library(tibble)
gene_exp<-column_to_rownames(.data=gene_exp,var ="genes") # var为第一列的列名
如果有时候,从第二列开始是字符串型
> str(gene_exp)
'data.frame': 6 obs. of 3 variables:
$ genes : chr "a" "b" "c" "d" ...
$ expression_1: chr "1" "2" "1" "2" ...
$ expression_2: chr "3" "5" "3" "5" ...
也可以一次性将转变为数值型变量
gene_exp[,c(2,ncol(gene_exp))] <- apply(gene_exp[,c(2,ncol(gene_exp))],MARGIN = 2,FUN = as.numeric)
> str(gene_exp)
'data.frame': 6 obs. of 3 variables:
$ genes : chr "a" "b" "c" "d" ...
$ expression_1: num 1 2 1 2 1 2
$ expression_2: num 3 5 3 5 3 5
其中:
gene_exp[,c(2,ncol(gene_exp))]
为需要转换的区域,这里表示第2
到n
列,n为最大列数
MARGIN
= 1,表示处理行, = 2 表示处理列
FUN
,批量实现功能
as.numeric
,将其他类型变量
转换为数值型变量
2. 一句话解决重复基因求均值
有时候,测序结果中会出现重复基因
> gene_exp
genes expression_1 expression_2
1 a 1 3
2 b 2 5
3 c 1 3
4 a 2 5
5 b 1 3
6 c 2 5
这时候把第一列作为行名时会报错,因为行名不能有重复
> gene_exp<-column_to_rownames(.data=gene_exp,var ="genes")
Error in `.rowNamesDF<-`(x, value = value) :
duplicate 'row.names' are not allowed
In addition: Warning message:
non-unique values when setting 'row.names': ‘a’, ‘b’, ‘c’
因此我们可以先对重复基因求均值,再将基因作为行名
gene_exp <- aggregate(x = .~genes,data=gene_exp,FUN=mean)
gene_exp <- column_to_rownames(.data=gene_exp,var ="genes")
> gene_exp
expression_1 expression_2
a 1.5 4
b 1.5 4
c 1.5 4
完美解决~
一图看懂aggregate
函数
3. bioconductor 设置镜像
在安装bioconductor
上面的包时,从国外库中下载速度比较慢,可以使用清华的镜像
options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")
本期内容到此结束,这个系列主要是将一些小技巧整理起来,方便后续使用,单独发太少,汇集3个发一期,大家在分析过程中遇到的一些报错也可以私信联系,解决后也能纳入素材,方便他人后续避坑
感谢观看,如果有用还请点赞,关注!
网友评论