如何在 R 中切片矩阵并将生成的列向量保留为实际的列向量?[复制]

How to slice a matrix in R and keep the resulting column vector as an actual column vector indeed? [duplicate]

提问人:DOS 提问时间:1/26/2023 更新时间:1/26/2023 访问量:189

问:

我遇到的问题可以使用以下矩阵来说明:

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 进行切片并保留最后一列和所有行时,就像在操作中一样

b[seq(3), c(3)]

我明白了

# [1] 2 0 1

但是,我希望得到以下结果:

#      [,1]
# [1,]    2
# [2,]    0
# [3,]    1

获得上述结果的简单方法是什么?有没有如上所述返回结果的切片方法?

R 矩阵 切片

评论

2赞 Mikael Jagan 1/26/2023
b[i, j, drop = FALSE].另请参见。?Extract
0赞 Mikael Jagan 1/26/2023
复制?
0赞 DOS 1/27/2023
是的,@MikaelJagan。这个问题对我有用。

答:

2赞 PGSA 1/26/2023 #1
b[seq(3), c(3), drop = FALSE]

在这种情况下,可以简化为:

b[,3,drop = FALSE]