我有两个不同长度的 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/

10-12 17:33