2013-05-05 176 views
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 。给复选标记。真的没有其他答案。 – 2013-05-06 05:10:54

回答

17

[需要drop参数控制所提取的子集是否会被强制(如果可能)到较低维的对象(在这种情况下是一个普通的向量)。为了确保矩阵的一个子集,将永远是一个矩阵,将其设置drop=FALSE,像这样:

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

(。而对于一整套子集的规则和参数,尽量help("[")

+0

这更好,为什么我总是忘记'[]'的参数? – alexwhan 2013-05-05 23:57:30

+0

非常感谢:)这一个更好,因为它会在两种情况下表现相同的方式。第一种情况是当我们有矩阵A(3x3),并且我们想要选择多于一行A [1:2,] - 结果是矩阵,所以不需要动作A [1,] - 是矢量,所以我们需要转换为矩阵(as.matrix)和转置。 – LukaszJ 2013-05-06 14:21:15

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

应该做的伎俩......