[R] apply and cousins

MacQueen, Don macqueen1 at llnl.gov
Wed Jun 8 19:37:01 CEST 2016


Hopefully Bert and William won't be offended if I more or less summarize:

Are you assuming a loop will take ages, or have you actually tested it? I
wouldn't assume a loop will take ages, or that it will take much longer
than apply().

What's wrong with

  apply( X[ {logical expression } , ] , 1, function {do something} )

?

Where the logical expression identifies (by row index or any other method)
which rows you need to work on. I would expect it to be faster to subset
the rows first, rather than test for inclusion at every iteration within a
loop.

Also, if the data is acquired in such a way that you can know that the
most recent set of measurements is the last n rows, then tail(X,n) might
be good. For example,

> foo <- matrix(1:20, ncol=2)
> foo
      [,1] [,2]
 [1,]    1   11
 [2,]    2   12
 [3,]    3   13
 [4,]    4   14
 [5,]    5   15
 [6,]    6   16
 [7,]    7   17
 [8,]    8   18
 [9,]    9   19
[10,]   10   20
> tail(foo,4)
      [,1] [,2]
 [7,]    7   17
 [8,]    8   18
 [9,]    9   19
[10,]   10   20


-- 
Don MacQueen

Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062





On 6/8/16, 9:41 AM, "R-help on behalf of John Logsdon"
<r-help-bounces at r-project.org on behalf of j.logsdon at quantex-research.com>
wrote:

>Folks
>
>Is there any way to get the row index into apply as a variable?
>
>I want a function to do some sums on a small subset of some very long
>vectors, rolling through the whole vectors.
>
>apply(X,1,function {do something}, other arguments)
>
>seems to be the way to do it.
>
>The subset I want is the most recent set of measurements only - perhaps a
>couple of hundred out of millions - but I can't see how to index each
>value.  The ultimate output should be a matrix of results the length of
>the input vector.  But to do the sum I need to access the current row
>number.
>
>It is easy in a loop but that will take ages. Is there any vectorised
>apply-like solution to this?
>
>Or does apply etc only operate on each row at a time, independently of
>other rows?
>
>
>Best wishes
>
>John
>
>John Logsdon
>Quantex Research Ltd
>+44 161 445 4951/+44 7717758675
>
>______________________________________________
>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.



More information about the R-help mailing list