如何在R中切片矩阵并将结果列向量保留为真实列向量?
R矩阵切片保留矩阵结构的方法
问题场景
定义如下矩阵:
b <- cbind(matrix(c(1, 0, 0), nrow = 3), matrix(c(0, 0, 0), nrow = 3), matrix(c(2, 0, 1), nrow = 3))
矩阵b的输出为:
[,1] [,2] [,3] [1,] 1 0 2 [2,] 0 0 0 [3,] 0 0 1
当执行切片操作b[seq(3), c(3)]时,得到的是一个向量[1] 2 0 1,但需要保留矩阵结构,即输出:
[,1] [1,] 2 [2,] 0 [3,] 1
解决方法
- 使用
drop=FALSE参数(推荐):在切片时添加该参数,强制保留矩阵维度
若要取所有行,可简化为:b[seq(3), c(3), drop=FALSE]b[, 3, drop=FALSE] - 用
matrix()转换向量:将切片得到的向量重新构造为矩阵matrix(b[seq(3), c(3)], ncol = 1)
内容的提问来源于stack exchange,提问作者DOS
相关产品推荐
相关产品推荐

