[R] fold right - recursive list (vector) operators
John Fox
jfox at mcmaster.ca
Wed Nov 3 23:18:48 CET 2004
Dear MJ,
If I follow correctly what you want to do, then the following should
work:
foldr <- function(f, x){
if (length(x) > 1) f(c(x[1], Recall(f, x[-1])))
else f(x)
}
For example,
> sum(c(4, sum(c(2, sum(6)))))
[1] 12
> foldr(sum, c(4,2,6))
[1] 12
I hope this helps,
John
On Wed, 3 Nov 2004 22:59:11 +0100 (CET)
Mads Jeppe Tarp-Johansen <s02mjtj at math.ku.dk> wrote:
>
> The programming language mosml comes with foldr that 'accumulates' a
> function f over a list [x1,x2,...,xn] with initial value b as follows
>
> foldr f b [x1,x2,...,xn] = f(x1,...,f(xn-1,f(xn,b))...)
>
> Observe that "list" should have same elements so in R terminology it
> would
> perhaps be appropriate to say that the accumulation takes place over
> a
> 'vector'.
>
> I wonder if R comes with a similar function and in general a library
> or
> package with list (vector) operators. Or is such programming style
> not
> intended in R?
>
> Regards MJ
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
--------------------------------
John Fox
Department of Sociology
McMaster University
Hamilton, Ontario, Canada
http://socserv.mcmaster.ca/jfox/
More information about the R-help
mailing list