[R] apply to row and column of matrix
Eric Berger
er|cjberger @end|ng |rom gm@||@com
Mon Sep 26 17:46:51 CEST 2022
Bert provided an excellent answer to your question.
FYI here is a different approach to do the calculation.
It uses data.frame rather than matrix. A data frame is a list of its columns.
Here the function supplied to sapply operates on each column of the data.frame.
> m <- as.data.frame(t(matrix(1:10,ncol=2)))
> m
V1 V2 V3 V4 V5
1 1 2 3 4 5
2 6 7 8 9 10
> sapply(m, cumsum)
V1 V2 V3 V4 V5
[1,] 1 2 3 4 5
[2,] 7 9 11 13 15
On Mon, Sep 26, 2022 at 5:57 PM Bert Gunter <bgunter.4567 using gmail.com> wrote:
>
> from ?apply:
> "If each call to FUN returns a vector of length n, and simplify is
> TRUE, then apply returns an array of dimension c(n, dim(X)[MARGIN]) ."
>
> For margin = 1 (cumsum over rows), each call to cumsum return a vector
> of length 2. Hence the array returned will be of dimension c(2,
> c(5,2)[1]) = c(2,5).
>
> Cheers,
> Bert
>
>
> On Mon, Sep 26, 2022 at 7:43 AM Jinsong Zhao <jszhao using yeah.net> wrote:
> >
> > Hi there,
> >
> > I try to calculate the cumsum of row and column of a matrix as follows.
> >
> > > m <- matrix(1:10, ncol = 2)
> > > m
> > [,1] [,2]
> > [1,] 1 6
> > [2,] 2 7
> > [3,] 3 8
> > [4,] 4 9
> > [5,] 5 10
> > > apply(m, 1, cumsum)
> > [,1] [,2] [,3] [,4] [,5]
> > [1,] 1 2 3 4 5
> > [2,] 7 9 11 13 15
> > > apply(m, 2, cumsum)
> > [,1] [,2]
> > [1,] 1 6
> > [2,] 3 13
> > [3,] 6 21
> > [4,] 10 30
> > [5,] 15 40
> >
> > My question is why the dim of the return value of apply(m, 1, cumsum) is
> > not 5x2, but 2x5.
> >
> > Best,
> >
> > Jinsong
> >
> > ______________________________________________
> > R-help using 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 using 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.
More information about the R-help
mailing list