我正试图取得' 1s'的位置。在m矩阵中,并使用这些位置将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
通过以下操作,我得到m矩阵中1的列位置:
jj<- row(m)[m!=0]
[1] 3 2 4 1 2 4
我尝试了几种方法,但我很难根据m矩阵的行位置替换k矩阵中的值到NA。
我想要实现的目标如下:
[,1] [,2] [,3] [,4]
[1,] 12 32 12 NA
[2,] 23 NA 23 NA
[3,] NA 32 67 63
[4,] 61 22 NA NA
答案 0 :(得分:2)
我们可以用
转换为NANA^(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
或replace
replace(k, m==1, NA)
答案 1 :(得分:1)
你可以这样做:
k[m==1] <- NA