次の形式のマトリックスがあります
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 では、値が本来あるべき値ではなく (ゼロでなければなりません)、マトリックスが対称的ではなくなりました...そのため、ほとんどの遺伝子で最終的にエラーが発生します!