如何从R中的矩阵操作数组索引值

如何从R中的矩阵操作数组索引值,r,matrix,indexing,R,Matrix,Indexing,给定一个矩阵 mat = matrix(round(runif(min=0,max=1,n=9*9)),ncol=9,nrow=9) 假设您希望使用数组索引获得1的所有值 indx.1 = which(mat == 1, arr.ind=TRUE) 如何在矩阵中操纵这些索引值 以下内容无法实现我的目标: result.i.dont.want = mat result.i.dont.want[indx.1[,1],indx.1[,2]] = NA 因为,据我所知,在indx.1[,1]和in

给定一个矩阵

mat = matrix(round(runif(min=0,max=1,n=9*9)),ncol=9,nrow=9)
假设您希望使用数组索引获得1的所有值

indx.1 = which(mat == 1, arr.ind=TRUE)
如何在矩阵中操纵这些索引值

以下内容无法实现我的目标:

result.i.dont.want = mat
result.i.dont.want[indx.1[,1],indx.1[,2]] = NA
因为,据我所知,在indx.1[,1]和indx.1[,2]的每个组合上都有R个索引

我知道如果使用arr.ind=FALSE,这很容易,但是我对arr.ind=TRUE很好奇。例如:

result.i.do.want = mat
result.i.do.want[which(mat == 1)] = NA

您正在询问有关矩阵索引的问题
indx.1
返回,该
是一个由2列组成的矩阵;您可以直接使用它来处理矩阵元素。这就是所谓的矩阵索引。因此,请尝试
mat[index.1]

也考虑这个玩具例子:

A <- matrix(1:9, 3, 3)

A[1:2, 1:2]
#     [,1] [,2]
#[1,]    1    4
#[2,]    2    5

A[cbind(1:2, 1:2)]
# [1] 1 5
A