Hi, I think your ddply call with a calculation inside ".( )" is the problem. Are you sure you need to do this? Performing the cut outside ddply seems to work fine,
determine_counts<-function() { min_range<-1 max_range<-30 bin_range_size<-5 Me_df<-data.frame(Data = c(1:15), Person = "Me") You_df<-data.frame(Data = c(10:20), Person = "You") Them_df<-data.frame(Data = c(15:25), Person = "Them") Group_df_tmp<-rbind(Me_df,You_df) Group_df<-rbind(Group_df_tmp,Them_df) Group_df$Person <- factor(Group_df$Person, levels = c("Them", "You", "Me")) Group_df <- transform(Group_df, cut=cut(Data, breaks=fullseq(range(c(Data, min_range, max_range)), bin_range_size))) counts <- ddply(Group_df, .(cut, Person), nrow) names(counts) <- c("Bin", "Person", "Frequency") qplot(Person, Frequency, data = counts, fill = Person, geom="bar", stat="identity", width = 0.9, xlab="Person") + facet_grid(. ~ Bin) } function_nesting() HTH, baptiste 2009/11/19 Jason Rupert <jasonkrup...@yahoo.com>: > While putting my R code into functions, I've encountered a ddply function > nesting issue and need a bit of advice on the proper way to fix it. I've > tried several approahces, but neither worked and I need to have the ability > to include the "cut", "range", and "fullseq" methods within ddply. (For a > bit of that explanation refer to > http://finzi.psych.upenn.edu/Rhelp08/2009-February/187331.html) > > Thus, in order to preserve that functionality, and put my code within > functions, I needed to have an architecture similar to the following > implemented, where you end up running: > function_nesting() > > Unfortunately this produced errors within the ddply where it does not appear > to be recognizing or allowing variables or functions to be processed within > side its function. > > Thank you for any advice about how to proceed forward. > > > determine_counts<-function() > { > > min_range<-1 > max_range<-30 > bin_range_size<-5 > Me_df<-data.frame(Data = c(1:15), Person = "Me") > You_df<-data.frame(Data = c(10:20), Person = "You") > Them_df<-data.frame(Data = c(15:25), Person = "Them") > Group_df_tmp<-rbind(Me_df,You_df) > Group_df<-rbind(Group_df_tmp,Them_df) > Group_df$Person <- factor(Group_df$Person, levels = c("Them", "You", > "Me")) > #counts <- ddply(Group_df, .(cut(Data, breaks=fullseq(range(Data), > 5)), Person), nrow) > > # Approach 1 > counts <- ddply(Group_df, .(cut(Data, > breaks=fullseq(range(c(Group_df$Data, min_range, max_range)), > bin_range_size)), Person), nrow) > > # Approach 2 > range_tmp<-range(c(Group_df$Data, min_range, max_range)) > counts <- ddply(Group_df, .(cut(Data, breaks=fullseq(range_tmp, > bin_range_size)), Person), nrow) > > > names(counts) <- c("Bin", "Person", "Frequency") > qplot(Person, Frequency, data = counts, fill = Person, geom="bar", > stat="identity", width = 0.9, xlab="Person") + facet_grid(. ~ Bin) > } > > > > > function_nesting<-function() > { > determine_counts() > } > > > > However, if the code is just run straight through without being nested it > works fine: > > min_range<-1 > max_range<-30 > bin_range_size<-5 > Me_df<-data.frame(Data = c(1:15), Person = "Me") > You_df<-data.frame(Data = c(10:20), Person = "You") > Them_df<-data.frame(Data = c(15:25), Person = "Them") > Group_df_tmp<-rbind(Me_df,You_df) > Group_df<-rbind(Group_df_tmp,Them_df) > Group_df$Person <- factor(Group_df$Person, levels = c("Them", "You", > "Me")) > #counts <- ddply(Group_df, .(cut(Data, breaks=fullseq(range(Data), > 5)), Person), nrow) > counts <- ddply(Group_df, .(cut(Data, > breaks=fullseq(range(c(Group_df$Data, min_range, max_range)), > bin_range_size)), Person), nrow) > > Unfortunately this is not within a function, so thanks again for any advice > on how to approach this issue. > > > > > ______________________________________________ > 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. > ______________________________________________ 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.