R矢量化:为每行分配值,根据每行的列索引区分列

R矢量化:为每行分配值,根据每行的列索引区分列,r,matrix,indexing,vectorization,R,Matrix,Indexing,Vectorization,我有一个由40000行和9列组成的矩阵和一个由40000项组成的向量B。 B中的每一项都是从1到9的数字。我想将A中的特定列与B中的项目对应,并使用1。 现在,我正在使用for循环 for(r in 1:40000){ A[r,B[r]]=1 } 但有没有办法将其矢量化? 谢谢你可以试试 A[cbind(1:nrow(A), B)] <- 1 for(r in 1:nrow(A1)){ A1[r, B[r]] <- 1 } identical(A, A1) #[

我有一个由40000行和9列组成的矩阵和一个由40000项组成的向量B。 B中的每一项都是从1到9的数字。我想将A中的特定列与B中的项目对应,并使用1。 现在,我正在使用for循环

for(r in 1:40000){
   A[r,B[r]]=1
}
但有没有办法将其矢量化? 谢谢你可以试试

A[cbind(1:nrow(A), B)] <- 1
 for(r in 1:nrow(A1)){
  A1[r, B[r]] <- 1
  }
 identical(A, A1)
#[1] TRUE
set.seed(24)
A <- matrix(sample(1:40, 25*9, replace=TRUE), ncol=9)
B <- sample(1:9, 25, replace=TRUE)
A1 <- A