我有两个不同长度的 1 列矩阵。两个矩阵都有共同的行名和其他每个矩阵唯一的行名(并且顺序可能不同)。如何减去两者以确保每个共同元素相互减去?例如:
> mat1
[,1]
a 1
b 2
c 3
d 4
e 5
f 6
> mat2
[,1]
x 1
a 2
y 3
b 4
> mat3
[,1]
a -1
b -2
c 3
d 4
e 5
f 6
x -1
y -3
where mat3 <- mat1 - mat2
最佳答案
试试这个:
#creating your matrices
mat1<-matrix(1:6,ncol=1,dimnames=list(letters[1:6],NULL))
mat2<-matrix(1:4,ncol=1,dimnames=list(c("x","a","y","b"),NULL))
#getting the unique rownames
rows<-unique(c(rownames(mat1),rownames(mat2)))
#creating an "empty" mat3
mat3<-matrix(0,nrow=length(rows),ncol=1,dimnames=list(rows,NULL))
#filling values
mat3[rownames(mat1),]<-mat1
mat3[rownames(mat2),]<-mat3[rownames(mat2),]-mat2
关于矩阵的 R 元素相减,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29927369/