我有以下格式的矩阵
gene ids A-B A-C A-D B-C B-D C-D
GENE1 0 0 1 1 1 0
GENE2 1 0 1 1 1 1
GENE3 1 0 0 0 1 1
GENE4 0 1 0 0 0 0
并希望将其拆分如下:对角线值将为空,因为上述矩阵是成对比较。
Gene1
A B C D sum
A - 0 0 1 1
B 0 - 1 1 2
C 0 1 - 0 1
D 1 1 0 - 2
Gene2
A B C D sum
A - 1 0 1 2
B 1 - 1 1 3
C 0 1 - 1 2
D 1 1 1 - 3
Gene3
A B C D sum
A - 1 0 0 1
B 1 - 0 1 2
C 0 0 - 1 1
D 0 1 1 - 2
Gene4
A B C D sum
A - 0 1 0 1
B 0 - 0 0 0
C 1 0 - 0 1
D 0 0 0 - 0
这只是数据的一个子集,我有 1000 多个基因需要以类似的方式进行拆分。我尝试用下部的转置填充上部三角形,但在对许多基因做同样的事情时没有成功。将整个矩阵拆分为不同的子矩阵后,我想逐行求和并为每个基因获得相同的图。
下面提供的解决方案不适用于更多的数字比较:
例如:
DF <- read.table(text="gene_ids A-B A-C A-D A-E B-C B-D B-E C-D C-E D-E
GENE1 0 0 1 1 1 0 1 0 1 1
GENE2 1 0 1 1 1 1 0 1 1 0
GENE3 1 0 0 0 1 1 0 1 0 1
GENE4 0 1 0 0 0 0 1 1 1 0
GENE5 1 1 0 0 0 0 0 1 1 1
GENE6 0 1 1 0 0 1 0 0 0 0", header=TRUE)
使用提供的解决方案给出
:[[1]]
A B C D E sum
A NA 0 0 1 1 2
B 0 NA 1 1 0 2
C 0 1 NA 0 1 2
D 1 0 0 NA 1 2
E 1 1 1 1 NA 4
在 RowB 中,D 列的值不是应有的值(它必须为零),并且矩阵不再对称......所以在大多数基因中最终都会出现错误!