Eric,

I am not sure your solution is particularly economical albeit it works for 
arbitrary arrays of any dimension, presumably. But it seems to involve 
converting a matrix to a tensor just to undo it back to a vector. Other 
solutions offered here, simply manipulate the dim attribute of the data 
structure.

Of course, the OP may have uses in mind which the package might make easier. We 
often get fairly specific questions here without the additional context that 
may help guide a better answer. 

-----Original Message-----
From: R-help <r-help-boun...@r-project.org> On Behalf Of Eric Berger
Sent: Sunday, August 6, 2023 3:34 AM
To: Bert Gunter <bgunter.4...@gmail.com>
Cc: R-help Mailing List <r-help@r-project.org>; Steven Yen <st...@ntu.edu.tw>
Subject: Re: [R] Stacking matrix columns

Stacking columns of a matrix is a standard operation in multilinear
algebra, usually written as the operator vec().
I checked to see if there is an R package that deals with multilinear
algebra. I found rTensor, which has a function vec().
So, yet another way to accomplish what you want would be:

> library(rTensor)
> vec(as.tensor(x))

Eric


On Sun, Aug 6, 2023 at 5:05 AM Bert Gunter <bgunter.4...@gmail.com> wrote:
>
> Or just dim(x) <- NULL.
> (as matrices in base R are just vectors with a dim attribute stored in
> column major order)
>
> ergo:
>
> > x
>  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
> > x<- 1:20  ## a vector
> > is.matrix(x)
> [1] FALSE
> > dim(x) <- c(5,4)
> > is.matrix(x)
> [1] TRUE
> > attributes(x)
> $dim
> [1] 5 4
>
> > ## in painful and unnecessary detail as dim() should be used instead
> > attr(x, "dim") <- NULL
> > is.matrix(x)
> [1] FALSE
> > x
>  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20
>
> ## well, you get it...
>
> -- Bert
>
> On Sat, Aug 5, 2023 at 5:21 PM Iris Simmons <ikwsi...@gmail.com> wrote:
> >
> > You could also do
> >
> > dim(x) <- c(length(x), 1)
> >
> > On Sat, Aug 5, 2023, 20:12 Steven Yen <st...@ntu.edu.tw> wrote:
> >
> > > I wish to stack columns of a matrix into one column. The following
> > > matrix command does it. Any other ways? Thanks.
> > >
> > >  > x<-matrix(1:20,5,4)
> > >  > x
> > >       [,1] [,2] [,3] [,4]
> > > [1,]    1    6   11   16
> > > [2,]    2    7   12   17
> > > [3,]    3    8   13   18
> > > [4,]    4    9   14   19
> > > [5,]    5   10   15   20
> > >
> > >  > matrix(x,ncol=1)
> > >        [,1]
> > >   [1,]    1
> > >   [2,]    2
> > >   [3,]    3
> > >   [4,]    4
> > >   [5,]    5
> > >   [6,]    6
> > >   [7,]    7
> > >   [8,]    8
> > >   [9,]    9
> > > [10,]   10
> > > [11,]   11
> > > [12,]   12
> > > [13,]   13
> > > [14,]   14
> > > [15,]   15
> > > [16,]   16
> > > [17,]   17
> > > [18,]   18
> > > [19,]   19
> > > [20,]   20
> > >  >
> > >
> > > ______________________________________________
> > > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > > 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.
> > >
> >
> >         [[alternative HTML version deleted]]
> >
> > ______________________________________________
> > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> > 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.
>
> ______________________________________________
> R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to