Hi all, I've been wondering for a long time why R drops the dimensions of an array/matrix when you try to take a subset of one column. I mean this: dim(A) [1] 2 5 2 B=A[1,,] dim(B) 5 2 # so now dim(B)[3] doesn't work C=B[2,] dim(C) NULL # so now nrow(C) doesn't work Typically, you can get rid of this by writing as.matrix, as.array(...) but that generates extra lines of code. This is really annoying. Does anybody know how to turn this behaviour off? best, Markku Karhunen Uni. Helsinki
On Oct 12, 2012, at 4:52 AM, Markku Karhunen <markku.karhunen at helsinki.fi> wrote:> > Hi all, > > I've been wondering for a long time why R drops the dimensions of an array/matrix when you try to take a subset of one column. I mean this: > > dim(A) > [1] 2 5 2 > B=A[1,,] > dim(B) > 5 2 # so now dim(B)[3] doesn't work > C=B[2,] > dim(C) > NULL # so now nrow(C) doesn't work > > Typically, you can get rid of this by writing as.matrix, as.array(...) but that generates extra lines of code. This is really annoying. Does anybody know how to turn this behaviour off? > > best, > Markku Karhunen > Uni. HelsinkiYou can save yourself a lot of time if you visit the R FAQ as your first action item when such questions come up. In this case: http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-do-my-matrices-lose-dimensions_003f Regards, Marc Schwartz
On 12-10-2012, at 11:52, "Markku Karhunen" <markku.karhunen at helsinki.fi> wrote:> > Hi all, > > I've been wondering for a long time why R drops the dimensions of an array/matrix when you try to take a subset of one column. I mean this: > > dim(A) > [1] 2 5 2 > B=A[1,,]Use B <- A[1,,,drop=FALSE] Also read the help for [: ?"[" Berend> dim(B) > 5 2 # so now dim(B)[3] doesn't work > C=B[2,] > dim(C) > NULL # so now nrow(C) doesn't work > > Typically, you can get rid of this by writing as.matrix, as.array(...) but that generates extra lines of code. This is really annoying. Does anybody know how to turn this behaviour off? > > best, > Markku Karhunen > Uni. Helsinki > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.
On Oct 12, 2012, at 2:52 AM, Markku Karhunen wrote:> > Hi all, > > I've been wondering for a long time why R drops the dimensions of an array/matrix when you try to take a subset of one column. I mean this: > > dim(A) > [1] 2 5 2 > B=A[1,,] > dim(B) > 5 2 # so now dim(B)[3] doesn't work > C=B[2,] > dim(C) > NULL # so now nrow(C) doesn't work > > Typically, you can get rid of this by writing as.matrix, as.array(...) but that generates extra lines of code. This is really annoying. Does anybody know how to turn this behaviour off?Read the help page for: ?"[" # especially regarding the drop parameter. -- David Winsemius, MD Alameda, CA, USA