The new code you posted has introduced two more bugs yet again. Before posting again run your code in the debugger issuing this command prior to testing fnc:
debug(fnc) and then single step through the code. That way you can find your own bugs. See ?debug You can source aggregate.zoo from R-Forge via: source("http://r-forge.r-project.org/plugins/scmsvn/viewcvs.php/*checkout*/pkg/R/aggregate.zoo.R?rev=483&root=zoo") On Mon, Jul 7, 2008 at 3:19 AM, Megh Dal <[EMAIL PROTECTED]> wrote: > "You will have to translate each character string > to a function separately." > > Here I have a modified program : > > library(zoo) > Z.index <- as.Date(sample(12450:15500, 3000)) > Z.data <- matrix(rnorm(300), ncol = 1) > > data1 <- zoo(Z.data, Z.index) > > fnc = function(data1) > { > selection2 = select.list(c("Mean", "SD"), multiple = T) > > Mean = function(dataa) mean(dataa) > SD = function(dataa) sd(dataa) > > my.match.fun <- function(x) match.fun(x) ### > > for (i in length(selection2)) > { > selection2[i] <- my.match.fun(selection2[i]) ### > } > > ag = function(z, by, selection2) > { > f = function(f) aggregate(z, by, f) > do.call(cbind, sapply(selection2, f, simplify = F)) > } > > return(ag(data1, as.yearqtr, selection2)) > } > > fnc(data1) > > Frustrated !! still error. I also have tried downloading from R-forge. But > download page is not working. I then tried directly from R using > install.packages. Still there is no improvement. > > Regards, > > > --- On Mon, 7/7/08, Gabor Grothendieck <[EMAIL PROTECTED]> wrote: > >> From: Gabor Grothendieck <[EMAIL PROTECTED]> >> Subject: Re: [R] Error in defining function >> To: [EMAIL PROTECTED] >> Cc: [EMAIL PROTECTED] >> Date: Monday, July 7, 2008, 8:44 AM >> Your program works as is if you choose Mean but you have >> introduced two new errors: >> >> 1. SD is not defined in your program. >> >> 2. if multiple choices are taken then it will try to pass a >> vector to >> my.match.fun but that calls match.fun which only allows >> functions >> to be passed to it. You will have to translate each >> character string >> to a function separately. >> >> Try this: >> >> funs <- c("Mean", "SD") >> f <- function(fun) aggregate(data1, as.yearqtr, >> get(fun)) >> do.call(cbind, sapply(tolower(funs), f, simplify = FALSE)) >> >> >> On Sun, Jul 6, 2008 at 10:43 PM, Megh Dal >> <[EMAIL PROTECTED]> wrote: >> > I made some changes and also incorporated your advice >> : >> > >> > library(zoo) >> > Z.index <- as.Date(sample(12450:15500, 3000)) >> > Z.data <- matrix(rnorm(300), ncol = 1) >> > >> > data1 <- zoo(Z.data, Z.index) >> > >> > fnc = function(data1) >> > { >> > selection2 = select.list(c("Mean", >> "SD"), multiple = T) >> > >> > Mean = function(dataa) mean(dataa) >> > my.match.fun <- function(x) match.fun(x) ### >> > selection2 <- my.match.fun(selection2) ### >> > ag = function(z, by, selection2) >> > { >> > f = function(f) aggregate(z, >> by, f) >> > do.call(cbind, >> sapply(selection2, f, simplify = F)) >> > } >> > >> > return(aggregate(data1, as.yearqtr, selection2)) >> > } >> > >> > fnc(data1) >> > >> > But still getting same error. >> > >> > >> > --- On Mon, 7/7/08, Gabor Grothendieck >> <[EMAIL PROTECTED]> wrote: >> > >> >> From: Gabor Grothendieck >> <[EMAIL PROTECTED]> >> >> Subject: Re: [R] Error in defining function >> >> To: [EMAIL PROTECTED] >> >> Cc: [EMAIL PROTECTED] >> >> Date: Monday, July 7, 2008, 1:23 AM >> >> On Sun, Jul 6, 2008 at 3:19 PM, Megh Dal >> >> <[EMAIL PROTECTED]> wrote: >> >> > Can anyone please tell me why I am getting >> this error? >> >> > >> >> > library(zoo) >> >> > Z.index <- as.Date(sample(12450:15500, >> 3000)) >> >> > Z.data <- matrix(rnorm(300), ncol = 1) >> >> > >> >> > data1 <- zoo(Z.data, Z.index) >> >> > >> >> > fnc = function(data1) >> >> > { >> >> > selection2 = >> select.list(c("Mean"), >> >> multiple = F) >> >> > >> >> > Mean = function(dataa) mean(dataa) >> >> > >> >> > return(aggregate(data1, as.yearqtr, >> selection2)) >> >> > } >> >> > >> >> > fnc(data1) >> >> > >> >> > I got following error : >> >> > Error in get(as.character(FUN), mode = >> >> "function", envir = envir) : >> >> > variable "Mean" of mode >> >> "function" was not found >> >> > >> >> >> >> Its a bug in aggregate.zoo . Its just been fixed >> in the >> >> zoo devel version >> >> available on R-Forge so you can either grab that >> or use the >> >> workaround >> >> below: >> >> >> >> library(zoo) >> >> >> >> set.seed(1) >> >> Z.data <- matrix(rnorm(300), ncol = 1) >> >> Z.index <- as.Date(sample(12450:15500, 3000)) >> >> data1 <- zoo(Z.data, Z.index) >> >> >> >> fnc <- function(data1) { >> >> selection2 <- select.list("Mean", >> multiple >> >> = FALSE) >> >> Mean <- function(dataa) mean(dataa) >> >> >> >> my.match.fun <- function(x) match.fun(x) >> ### >> >> selection2 <- my.match.fun(selection2) ### >> >> >> >> return(aggregate(data1, as.yearqtr, >> selection2)) >> >> } >> >> >> >> fnc(data1) >> > >> > >> > >> > > > > > ______________________________________________ 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.