programming creating different functions in a loop
Thanks Luke! It works! My mistake was that I used "local binding" only for "i" and not for the whole function. Best regards, Florin On Thu, 26 Mar 2009 10:57:21 -0500 (CDT)
luke at stat.uiowa.edu wrote:
for() does not creae separete bindings for the index each iteration,
so the function bodies see the global binding of i, which in this case
will be the final value. One possible solution is to use local(),
e.g.
for(i in 1:3){
assign(paste("f",i,sep=""),
local({
k <- i # create local binding with current loop
index value function(x) x + k
}))
}
luke
On Thu, 26 Mar 2009, Florin Maican wrote:
Hi
I want to create the following functions in a loop
f1<-function(x){x+1}
f2<-function(x){x+2}
f3<-function(x){x+3}
Output f1(2)=3
f2(2)=4
f3(2)=5
I tried to create the in a loop as bellow but I get wrong on answers
because the value of i change
for(i in 1:3){
assign(paste("f",i,sep="")
,function(x)
x+i
)
} # end for
Output f1(2)=5
f2(2)=5
f3(2)=5
But it is not what I want. The question is how I can
fix in R the value of "i" in my functions? I tried to use assign()
and get(),but I did not manage.
Thanks in advance,
Florin
Florin G. Maican
==================================
Ph.D. candidate,
Department of Economics,
School of Business, Economics and Law,
Gothenburg University, Sweden
-----------------------------------
P.O. Box 640 SE-405 30,
Gothenburg, Sweden
Mobil: +46 76 235 3039
Phone: +46 31 786 4866
Fax: +46 31 786 4154
Home Page: http://maicanfg.googlepages.com/index.html
E-mail: florin.maican at handels.gu.se
------------------------------------
"Not everything that counts can be
counted, and not everything that can be
counted counts."
--- Einstein ---