【发布时间】:2017-01-22 23:31:07
【问题描述】:
我想从一个向量构建一个矩阵如下:如果y的第一个元素是5,我想使矩阵的第一行和第5列为1。该行中的其他元素为0。
y=round(runif(30)*9)+1
y_m=matrix(rep(0,length(y)*10),ncol=10)
for (i in 1:length(y)){
y_m[i,y[i]]=1;
}
有什么方法可以避免 for 循环?我试图做y_m[,y]=1,但显然它不起作用。
【问题讨论】:
-
我认为您的意思是“从列索引向量扩展压缩稀疏矩阵”
-
另一种方法:
xtabs(rep(1, length(y)) ~ seq_along(y) + y)
标签: r vector vectorization sparse-matrix indices