I think there is much to recommend this approach, but if you still want to have separate functions in the workspace with the names having successive integer designations then I have an approach. (There could still be storage in a list for these functions with matching named indices.)

> ftxt <- paste("ff.", 1:10, "<- function(x) { ff.", 0:9, "(x) - sum(1:j)}", sep="")
> source(file=textConnection( ftxt[1]) )
> ff.1
function(x) { ff.0(x) - sum(1:j)}
> source(file=textConnection( ftxt[2]) )
> ff.2
function(x) { ff.1(x) - sum(1:j)}

You could sapply over the 'ftxt' vector using the source() function on a textConnection.

Clunky, admittedly. And I never got the intended logic, so completely untested.

--
David.

On May 23, 2012, at 8:59 AM, Rui Barradas wrote:

Hello,

To keep related objects of the same nature in the same structure makes very good sense but why not name the functions in the list after they were created?

Using 'NextFunc' of a previous post,


f.list <- list()
f.list[[1]] <- function(x) x^2
f.list[[2]] <- NextFunc(f, 1)
f.list[[3]] <- NextFunc(f2, 2)

names(f.list) <- paste("ff", 1:3, sep=".")

f.list[[ 3 ]](3) # 6 = 3^2 - 1 - 2
f.list[[ "ff.3" ]](3) # the same
f.list$ff.3(3) # the same


Hope this helps,

Rui Barradas
Em 23-05-2012 11:00, "R. Michael Weylandt" <michael.weyla...@gmail.com> escreveu:
Date: Tue, 22 May 2012 18:50:08 -0400
From: "R. Michael Weylandt"<michael.weyla...@gmail.com>
To: Etienne Larriv?e-Hardy      <etienne.larrivee-hard...@ulaval.ca>
Cc:r-help@r-project.org
Subject: Re: [R] Creating functions with a loop.
Message-ID:
        <caamysgmpyobjlp5qhrg3s6um0c5t08yn-cuiug9eq2sstob...@mail.gmail.com>
Content-Type: text/plain; charset=ISO-8859-1

You can do what you want with the get() and assign() functions, though
it might be easier and better to use match.fun() than get()

Much better though would be to build your functions in a list and call
the n-th element of the list with syntax like

f.list[[3]](4)

will call the function in the third element of the list with argument 4.

Best,
Michael

On Tue, May 22, 2012 at 1:24 PM, Etienne Larriv?e-Hardy
<etienne.larrivee-hard...@ulaval.ca>  wrote:
> Michael's method seems to be working but I still can't get to wrap it in a > loop since I cannot get the loop to dynamically change the functions' name, > i.e. ff1, ff2, ff3, ... In other words, I would need the first iteration to > create the function ff1, the second to create the function ff2, ... > Furthermore, does anyone know of a way to call said functions from a loop in > a way that the first step of the loop calls ff1, the second calls ff2 and so
>  on?
>
>  The 2 problems should be closely related I think.
>
>  Thanks for the time
>
>  --
>  View this message in 
context:http://r.789695.n4.nabble.com/Creating-functions-with-a-loop-tp4630896p4630938.html
>  Sent from the R help mailing list archive at Nabble.com.
>

______________________________________________
R-help@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.

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@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.

Reply via email to