Stacking matrix columns
Avi, I was not trying to provide the most economical solution. I was trying to anticipate that people (either the OP or others searching for how to stack columns of a matrix) might be motivated by calculations in multilinear algebra, in which case they might be interested in the rTensor package.
On Sun, Aug 6, 2023 at 6:16?PM <avi.e.gross at gmail.com> wrote:
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-bounces at r-project.org> On Behalf Of Eric Berger Sent: Sunday, August 6, 2023 3:34 AM To: Bert Gunter <bgunter.4567 at gmail.com> Cc: R-help Mailing List <r-help at r-project.org>; Steven Yen <styen at 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.4567 at 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 <ikwsimmo at gmail.com> wrote:
You could also do dim(x) <- c(length(x), 1) On Sat, Aug 5, 2023, 20:12 Steven Yen <styen at 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 at 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 at 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 at 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 at 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.