项目需求
近期在处理单细胞项目数据,想对基因和read数构成的矩阵文件做进一步的处理,比如删除一些指定基因,删除一些指定细胞,查了一些材料并没发现合适的解决方案,所以有必要遂基于参考材料在具体描述一下这类数据处理方法。1
2
3
4
5
6
7
8
9
10
11#常规删除行列数据
dataly<- data.frame(a=1:2, b=2:3, c=3:4, d=4:5,e=5:6)
rownames(dataly)<- c("m","n")
dataly
a b c d e
m 1 2 3 4 5
n 2 3 4 5 6
#删除第一行
dataly1<- dataly[-1,]
#删除第三列
dataly2<- dataly[,-3]
积极实践
这种对于小样本来说处理比较方便,但是对于单细胞海量数据,这种处理方式显然是行不通的。特别是删除指定的基因或者细胞,对于具体所处的行列也不明确。比较直接的方式是直接根据行或者列的名字,直接匹配删除。接下来介绍一些基于这种类型数据的处理方式。1
2
3
4
5
6
7
8
9
10
11
12
13
14dataly
a b c d e
m 1 2 3 4 5
n 2 3 4 5 6
#删除b,d列的处理方式,-which 可以用!代替
dataly[ , -which(colnames(dataly) %in% c("b","d"))]
a c e
m 1 3 5
n 2 4 6
dataly[ , !colnames(dataly) %in% c("b","d")]
#删除n行的处理方式
dataly[!rownames(dataly) %in% c("n") , ]
a b c d e
m 1 2 3 4 5
他山之石
谷歌一下发现还有不少解决方案,个人比较喜欢这个。
1 | #数据生成 |
参考材料:
https://stackoverflow.com/questions/5234117/how-to-drop-columns-by-name-in-a-data-frame