减去两个矩阵并获得绝对值

问题描述 投票:0回答:1
SNP ID1 ID2 ID3 ID4
var1    0   1   1   2
var2    0   0   2   1
var3    2   1   1   0 

这里有两个矩阵,colnames是ID 1和ID 2,SNP编号是var1 var 2等。两个矩阵都有相同的ID和var。我想从矩阵2中减去矩阵1并获得绝对值。添加ID和变量以匹配矩阵中的数据。

SNP ID1 ID2 ID3 ID4
var1    1   1   0   0
var2    0   1   2   0
var3    1   2   2   1

我想得到第三个矩阵

SNP ID1 ID2 ID3 ID4
var1    1   0   1   2
var2    0   1   0   1
var3    1   1   1   1
r
1个回答
2
投票

你想要abs(m1 - m2),其中m1m2是你用下面创建的矩阵

m1 <- matrix(c(0,1,1,2,
               0,0,2,1,
               2,1,1,0), ncol = 4, byrow = TRUE)

m2 <- matrix(c(1,1,0,0,
               0,1,2,0,
               1,2,2,1), ncol = 4, byrow = TRUE)

rownames(m1) <- rownames(m2) <- paste0('var', seq_len(nrow(m1)))
colnames(m1) <- colnames(m2) <- paste0('ID', seq_len(ncol(m1)))

这产生了。

> abs(m1 - m2)
     ID1 ID2 ID3 ID4
var1   1   0   1   2
var2   0   1   0   1
var3   1   1   1   1

如果它们是具有显式SNP列的数据框,那么您将要删除该列:abs(df1[, -1] - df2[, -1])

© www.soinside.com 2019 - 2024. All rights reserved.