比较两个矩阵,保持一个矩阵中的值在另一个矩阵中为真

Compare two matrices, keeping values in one matrix that are TRUE in the other

这似乎是一项简单的任务,我在这里和其他地方查找后没有找到 R 的解决方案。我有两个矩阵,一个是字符串值,另一个是逻辑值。

a <- matrix(c(
              "A", "B", "C"
              ))

b <- matrix(c(
              T, F, T
              ))
> b
      [,1]
[1,]  TRUE
[2,] FALSE
[3,]  TRUE
> a
     [,1]
[1,] "A"
[2,] "B"
[3,] "C"

我需要创建第三个矩阵,在第一个矩阵中保留值,在第二个矩阵中保留 TRUE,在其余矩阵中保留 NA,如下所示:

> C
      [,1]
[1,]  "A"
[2,]  NA
[3,]  "C"

C <- matrix(a[ifelse(b, T, NA)], ncol = ncol(a))

a <- a[b] 。这也可能有效,具体取决于您想要的结果。

这里有一个替代方法,只需将 NA 指定为 FALSE:

a[b==FALSE] <- NA
     [,1]
[1,] "A" 
[2,] NA  
[3,] "C"

使用其中:

c<-a
c[which(b==FALSE)]<-NA