[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