R:使用条件使用来自两个其他矩阵的数据填充矩阵

时间:2017-05-07 09:42:28

标签: r

我是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(与BmatAmat相同) comapred如下:

Bmat

即。如果两个矩阵(if(is.na(Amat)!="TRUE" && is.na(Bmat)!="TRUE") {1} else {0} &amp; Cmat)都没有Amat,则Bmat应填充相应位置的“1”。 任何人都可以帮我解决这个问题而不需要循环吗?提前谢谢!

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))