There seems to be a result type difference when subscripting a 6 x 1
matrix as compared to a 3 x 2 matrix that is caused by the ncol = 1
compared to ncol > 1.
> ThinMatrix <- matrix(1:6,ncol=1)
> ThinMatrix
[,1]
[1,] 1
[2,] 2
[3,] 3
[4,] 4
[5,] 5
[6,] 6
> FatMatrix <- matrix(1:6,ncol=2)
> FatMatrix
[,1] [,2]
[1,] 1 4
[2,] 2 5
[3,] 3 6
> dim(ThinMatrix[TRUE,])
NULL #Though this value should be 6 1
> dim(FatMatrix[TRUE,])
[1] 3 2
Thanks for your help.
Terry Ireland
Subscripting Matrices
3 messages · Terrence Ireland, Gábor Csárdi, Marc Schwartz
You want `drop=FALSE`:
dim(ThinMatrix[TRUE, , drop=FALSE])
[1] 6 1
From ?"[":
drop: For matrices and arrays. If ?TRUE? the result is coerced to
the lowest possible dimension (see the examples). This only
works for extracting elements, not for the replacement. See
?drop? for further details.
And R inferno 8.1.44:
http://www.burns-stat.com/pages/Tutor/R_inferno.pdf
Gabor
On Wed, Aug 6, 2014 at 11:07 AM, Terrence Ireland <kyzyl at his.com> wrote:
There seems to be a result type difference when subscripting a 6 x 1 matrix as compared to a 3 x 2 matrix that is caused by the ncol = 1 compared to ncol > 1.
ThinMatrix <- matrix(1:6,ncol=1) ThinMatrix
[,1] [1,] 1 [2,] 2 [3,] 3 [4,] 4 [5,] 5 [6,] 6
FatMatrix <- matrix(1:6,ncol=2) FatMatrix
[,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6
dim(ThinMatrix[TRUE,])
NULL #Though this value should be 6 1
dim(FatMatrix[TRUE,])
[1] 3 2 Thanks for your help. Terry Ireland
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
On Aug 6, 2014, at 10:07 AM, Terrence Ireland <kyzyl at his.com> wrote:
There seems to be a result type difference when subscripting a 6 x 1 matrix as compared to a 3 x 2 matrix that is caused by the ncol = 1 compared to ncol > 1.
ThinMatrix <- matrix(1:6,ncol=1) ThinMatrix
[,1] [1,] 1 [2,] 2 [3,] 3 [4,] 4 [5,] 5 [6,] 6
FatMatrix <- matrix(1:6,ncol=2) FatMatrix
[,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6
dim(ThinMatrix[TRUE,])
NULL #Though this value should be 6 1
dim(FatMatrix[TRUE,])
[1] 3 2 Thanks for your help. Terry Ireland
Hi, This question really should have gone to R-Help, not R-Devel and it is a FAQ: http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-my-matrices-lose-dimensions_003f
str(ThinMatrix[TRUE,])
int [1:6] 1 2 3 4 5 6 Regards, Marc Schwartz