比较两个矩阵,保持一个矩阵中的值在另一个矩阵中为真
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
这似乎是一项简单的任务,我在这里和其他地方查找后没有找到 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