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
答案 0 :(得分:2)
您需要abs(m1 - m2)
,其中m1
和m2
是使用以下内容创建的矩阵
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])