R 基于列位置更改矩阵中的值

R 基于列位置更改矩阵中的值,r,matrix,R,Matrix,我试图取m矩阵中“1”的位置,并使用这些位置将k矩阵中的值更改为NA。但是我在尝试了很多之后,还是很难得到它 m <- matrix(c(0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1), nrow = 4, byrow = TRUE) m [,1] [,2] [,3] [,4] [1,] 0 0 0 1 [2,] 0 1 0 1 [3,] 1 0

我试图取m矩阵中“1”的位置,并使用这些位置将k矩阵中的值更改为NA。但是我在尝试了很多之后,还是很难得到它

m <- matrix(c(0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1), 
        nrow = 4, byrow = TRUE)
m

     [,1] [,2] [,3] [,4]
[1,]    0    0    0    1
[2,]    0    1    0    1
[3,]    1    0    0    0
[4,]    0    0    1    1


k <- matrix(c(12, 32, 12, 13, 23, 31, 23, 31, 23, 32, 67,63,61, 22,99, 34), 
        nrow = 4, byrow = TRUE)
k

     [,1] [,2] [,3] [,4]
[1,]   12   32   12   13
[2,]   23   31   23   31
[3,]   23   32   67   63
[4,]   61   22   99   34

我们可以使用

NA^(m)*k
#     [,1] [,2] [,3] [,4]
#[1,]   12   32   12   NA
#[2,]   23   NA   23   NA
#[3,]   NA   32   67   63
#[4,]   61   22   NA   NA
或者另一种选择是

is.na(k) <- m==1

您可以简单地执行以下操作:

k[m==1] <- NA
k[m==1]
is.na(k) <- m==1
replace(k, m==1, NA)
k[m==1] <- NA