Thanks Bill. Can you please tell me why did you change exp "pattern="*.xml"" to pattern="\\.xml$". I know that second one also makes sense.
On Mon, Aug 12, 2013 at 9:59 AM, William Dunlap <wdun...@tibco.com> wrote: > Change your 'fileIndex <- fileIndex + 1' to 'fileIndex <<- fileIndex + 1' > so the fileIndex in the environment of the call to generateFiles() is > altered > (instead of creating and forgetting about a variable called fileIndex > in the function created by generateFiles. > > generateFiles <- function(path, pattern="\\.xml$") { > files <- dir(path, pattern=pattern, full.names=TRUE, recursive=TRUE, > no..=TRUE) > total <- length(files) > fileindex <- 1 > fileGen <- function() { > if (fileindex < total) { > fileToReturn <- files[[fileindex]] > print(fileindex) > fileindex <<- fileindex + 1 > fileToReturn > } > } > fileGen > } > > used as: > > > nextFile <- generateFiles("c:/temp", pattern="\\.R$") > > nextFile() > [1] 1 > [1] "c:/temp/4209/test.R" > > nextFile() > [1] 2 > [1] "c:/temp/a.R" > > Bill Dunlap > Spotfire, TIBCO Software > wdunlap tibco.com > > > > -----Original Message----- > > From: r-help-boun...@r-project.org [mailto:r-help-boun...@r-project.org] > On Behalf > > Of Ashwani Rao > > Sent: Monday, August 12, 2013 9:45 AM > > To: r-help@r-project.org > > Subject: [R] function closure > > > > Hi, > > > > Just for fun, I wanted to try function closures. > > Here is simple function definition. > > The following "generateFiles" function return function "fileGen" which > will > > return a a regular file in directory , every time a call it (fileGen). > > > > > > generateFiles <- function(path, pattern="*.xml") > > > > { > > > > files <- dir(path, pattern="*.xml", full.names=TRUE, > recursive=TRUE, > > no..=TRUE) > > > > total <- length(files) > > > > fileindex = 1 > > > > fileGen <- function() > > > > { > > > > if (fileindex > total) > > > > { > > > > return(NULL) > > > > } > > > > fileToReturn <- files[[fileindex]] > > > > print(fileindex) > > > > fileindex <- fileindex + 1 > > > > return(fileToReturn) > > > > } > > > > return(fileGen) > > > > } > > > > > > I am incrementing the value of variable "fileindex" in the function > > "fileGen" , everytime I call this function. > > > > But the value of fileindex remains 1 , no matter how many times i call > > "fileGen()". > > > > Can you please tell me how to change the value of fileIndex so as in > > subsequent call to "fileGen" will reflect this. > > -- > > ठशà¥à¤µà¤¨à¥ पà¥à¤°à¤¤à¤¾à¤ª > > > > [[alternative HTML version deleted]] > > -- ठशà¥à¤µà¤¨à¥ पà¥à¤°à¤¤à¤¾à¤ª [[alternative HTML version deleted]]
______________________________________________ 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.