我是R
的新手。我有两个矩阵:
Amat<-matrix(data=c(11:20,NA,NA,NA,NA,25:30),nrow = 4,ncol = 5)
Bmat<-matrix(data=c(1:6,NA,NA,NA,NA,11:20),nrow = 4,ncol = 5)
我希望以Cmat
和{{1}的数据构建维度4x5的第三个矩阵Amat
(与Bmat
和Amat
相同) comapred如下:
Bmat
即。如果两个矩阵(if(is.na(Amat)!="TRUE" && is.na(Bmat)!="TRUE") {1} else {0}
&amp; Cmat
)都没有Amat
,则Bmat
应填充相应位置的“1”。
任何人都可以帮我解决这个问题而不需要循环吗?提前谢谢!
答案 0 :(得分:1)
我们可以通过将逻辑矩阵(!is.na(Amat) & !is.na(Bmat)
)强制转换为二进制(+
)来实现此目的
Cmat <- +(!is.na(Amat) & !is.na(Bmat))
Cmat
# [,1] [,2] [,3] [,4] [,5]
#[1,] 1 1 0 0 1
#[2,] 1 1 0 0 1
#[3,] 1 0 0 1 1
#[4,] 1 0 0 1 1
或其他变体包括
+(!is.na(Amat*Bmat))
或者
+(!is.na(Amat + Bmat))