如何从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