如何一次性为2×2矩阵添加指定行与列生成3×3矩阵?
一次性实现矩阵扩展的方法
你可以通过直接构造目标矩阵或者**嵌套使用rbind/cbind**的方式一步完成需求,同时修正原代码中行数不匹配的问题(原代码里cbind(original_matrix, c(1, 1, 0))会报错,因为原矩阵是2行,添加的列向量长度为3,行数不匹配):
方法1:直接构造3×3矩阵并填充
先初始化一个3×3的空矩阵,再把原矩阵和指定的行、列内容填充进去,全程一步完成:
original_matrix <- matrix(c(7, 2, 3, 5), nrow = 2) final_matrix <- { mat <- matrix(0, nrow = 3, ncol = 3) mat[1:2, 1:2] <- original_matrix mat[, 3] <- c(1, 1, 0) mat[3, ] <- c(1, 1, 0) mat }
方法2:嵌套rbind与cbind
把列扩展和行扩展的操作嵌套起来,省去中间变量:
original_matrix <- matrix(c(7, 2, 3, 5), nrow = 2) final_matrix <- rbind( cbind(original_matrix, c(1, 1)), # 先给原矩阵加2元素的列(对应最终列的前两个值) c(1, 1, 0) # 再添加完整的第三行 )
运行后得到的final_matrix就是你需要的3×3矩阵:
[,1] [,2] [,3] [1,] 7 3 1 [2,] 2 5 1 [3,] 1 1 0
内容的提问来源于stack exchange,提问作者Milaa
相关产品推荐
相关产品推荐

