[R] outputting functions in lapply

baptiste auguie baptiste.auguie at googlemail.com
Mon Dec 7 15:37:06 CET 2009


Hi,

I was about to send the exact same answer as you just received, so
I'll add a note instead. Your problem looks a bit like Currying,

Curry <-  # original from roxygen
function (f, ..., .left=TRUE)
{
    .orig = list(...)
    function(...){
	if(.left) {args <- c(.orig, list(...))} else {args <- c(list(...), .orig)}
	 do.call(f, args)
	}
}

Curry( function(k, r) print(paste(r, "<- r | k ->", k)), k=2)(1)
# "1 <- r | k -> 2"

Best,

baptiste



2009/12/7 Rune Schjellerup Philosof <rphilosof at health.sdu.dk>:
> How come the k is 3 in all of this output?
> I expected it to be equal to r.
>
>> tmp3 <- lapply(1:3, function(k) function(r) print(paste(r, "<- r | k
> ->", k)))
>> for (i in 1:3) { tmp3[[i]](i) }
> [1] "1 <- r | k -> 3"
> [1] "2 <- r | k -> 3"
> [1] "3 <- r | k -> 3"
>
> --
> Med venlig hilsen
>
> Rune Schjellerup Philosof
> Ph.d-stipendiat, Forskningsenheden for Biostatistik
>
> Telefon: 6550 3607
> E-mail:  rphilosof at health.sdu.dk
> Adresse: J.B. Winsløwsvej 9, 5000 Odense C
>
> SYDDANSK UNIVERSITET
> _______________________________________________________________
> * Campusvej 55 * 5230 * Odense M * 6550 1000 * www.sdu.dk
>
> ______________________________________________
> R-help at r-project.org mailing list
> 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