fold right - recursive list (vector) operators
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/