获取矩阵中的行作为矩阵

6
什么是从矩阵中获取行并作为矩阵的最短方法?
> x<-matrix(1:9,nrow=3,byrow=TRUE)
> x
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
[3,]    7    8    9
> x[1,]
[1] 1 2 3
> is.vector(x[1,])
[1] TRUE

我想要到达的地方

      [,1] [,2] [,3]
 [1,]    1    2    3

1
加油,Giraphant。给个勾吧。真的没有其他答案。 - IRTFM
2个回答

17

[接受一个drop参数,该参数控制提取的子集是否将被强制转换(如果可能)为低维对象(在这种情况下是普通向量)。为了确保矩阵的子集始终是矩阵,请将其设置为drop=FALSE,像这样:

x[1,,drop=FALSE]
     [,1] [,2] [,3]
[1,]    1    2    3

(获取完整的子集规则和参数,请尝试help("[")。)


这样更好,为什么我总是忘记 [] 的参数? - alexwhan
非常感谢 :) 这个更好,因为它在两种情况下的行为是相同的。第一种情况是当我们有一个矩阵A(3x3)并且我们想选择多于一行的A [1:2,] - 结果是矩阵,所以不需要采取其他行动,另一方面A [1,] - 是向量,所以我们需要将其转换为矩阵(as.matrix)并进行转置。 - LukaszJ

1
t(as.matrix(x[1,]))

应该可以解决问题...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接