如何创建对角线为rep(1,6)向量的390×2340矩阵?
实现390×2340矩阵的对角线区域填充
你可以用R语言快速实现这个需求,核心思路是给每行对应的连续6列赋值1,具体有两种实现方式:
方法一:向量化操作(高效推荐)
这种方式避免循环,利用R的向量索引特性直接赋值,处理大矩阵时效率更高:
# 初始化全0矩阵 mat <- matrix(0, nrow = 390, ncol = 2340) # 生成行和列的索引对:每行对应连续6列 rows <- rep(1:390, each = 6) cols <- 1:2340 # 给对应位置赋值1 mat[cbind(rows, cols)] <- 1
方法二:循环赋值(直观易懂)
如果更看重代码的可读性,也可以用循环逐行处理:
mat <- matrix(0, nrow = 390, ncol = 2340) for (i in 1:390) { # 计算当前行需要填充1的起始和结束列 start_col <- 6*(i-1) + 1 end_col <- 6*i mat[i, start_col:end_col] <- 1 }
验证结果:第一行的前6列均为1,第二行的第7到12列均为1,完全符合你给出的示例效果。
内容的提问来源于stack exchange,提问作者marco.23
相关产品推荐
相关产品推荐

