Hi Arnaud, I've added this case to the set of test cases in plyr and it will be fixed in the next version.
Hadley On Tue, Jun 1, 2010 at 2:33 PM, arnaud Gaboury <arnaud.gabo...@gmail.com> wrote: > Maybe not the cleanest way, but I create a fake data frame with one row so > ddply() is happy!! >> if (nrow(futures)==0) futures<-data.frame(.......) > > > > > >> -----Original Message----- >> From: Peter Ehlers [mailto:ehl...@ucalgary.ca] >> Sent: Tuesday, June 01, 2010 12:07 PM >> To: arnaud Gaboury >> Cc: 'Prof Brian Ripley'; r-help@r-project.org >> Subject: Re: [R] data frame manipulation with zero rows >> >> On 2010-06-01 1:53, arnaud Gaboury wrote: >> > Brian, >> > >> > If I do understand correctly, I must use in my function something >> else than >> > ddply() if I want to avoid any error each time my df has zero rows? >> > Am I correct? >> > >> >> You could define a function to handle the zero-rows case: >> >> f <- function(x){ >> if(nrow(x) < 1) out <- x[, c(1,3,2)] # or whatever >> else >> out <- ddply(x, c("DESCRIPTION","SETTLEMENT"), summarise, >> POSITION=sum(QUANTITY))[,c(1,3,2)] >> out >> } >> f(futures) >> >> -Peter Ehlers >> >> > >> > >> >> -----Original Message----- >> >> From: Prof Brian Ripley [mailto:rip...@stats.ox.ac.uk] >> >> Sent: Tuesday, June 01, 2010 9:47 AM >> >> To: arnaud Gaboury >> >> Subject: Re: [R] data frame manipulation with zero rows >> >> >> >> On Tue, 1 Jun 2010, arnaud Gaboury wrote: >> >> >> >>> Dear group, >> >>> >> >>> Here is the kind of data.frame I obtain every day with my function >> : >> >>> >> >>> futures<- >> >>> structure(list(DESCRIPTION = c("CORN Jul/10", "CORN Jul/10", >> >>> "CORN Jul/10", "CORN Jul/10", "CORN Jul/10", "LIVE CATTLE Aug/10", >> >>> "LIVE CATTLE Aug/10", "SUGAR NO.11 Jul/10", "SUGAR NO.11 Jul/10", >> >>> "SUGAR NO.11 Jul/10", "SUGAR NO.11 Jul/10", "SUGAR NO.11 Jul/10" >> >>> ), CREATED.DATE = structure(c(18403, 18406, 18406, 18406, 18406, >> >>> 18407, 18408, 18406, 18407, 18407, 18407, 18407), class = "Date"), >> >>> QUANTITY = c(1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1), SETTLEMENT = >> >>> c("373.2500", >> >>> "373.2500", "373.2500", "373.2500", "373.2500", "90.7750", >> >>> "90.7750", "14.9200", "14.9200", "14.9200", "14.9200", >> "14.9200" >> >>> )), .Names = c("DESCRIPTION", "CREATED.DATE", "QUANTITY", >> >>> "SETTLEMENT"), row.names = c(NA, 12L), class = "data.frame") >> >>> >> >>> I need then to apply to the df this following code line : >> >>> >> >>>> PosFut=ddply(futures, c("DESCRIPTION","SETTLEMENT"), summarise, >> >> POSITION= >> >>> sum(QUANTITY))[,c(1,3,2)] >> >>> >> >>> It works perfectly in most of case, BUT I have a new problem: it >> can >> >>> sometime occurs that my df "futures" is empty, with zero rows. >> >>> >> >>> >> >>> futures<- >> >>> structure(list(DESCRIPTION = character(0), CREATED.DATE = >> >>> structure(numeric(0), class = "Date"), >> >>> QUANTITY = numeric(0), SETTLEMENT = character(0)), .Names = >> >>> c("DESCRIPTION", >> >>> "CREATED.DATE", "QUANTITY", "SETTLEMENT"), row.names = integer(0), >> >> class = >> >>> "data.frame") >> >>> >> >>> It is not the usual case, but it can happen. With this df, when I >> >> pass the >> >>> above mentione line, I get an error : >> >>> >> >>>> PosFut=ddply(futures, c("DESCRIPTION","SETTLEMENT"), summarise, >> >> POSITION= >> >>> sum(QUANTITY))[,c(1,3,2)] >> >>> Error in tapply(1:nrow(data), splitv, list) : >> >>> arguments must have same length >> >>> >> >>> >> >>> How can I avoid this when my df is empty? >> >> >> >> Ask the author of the (missing) function ddply() to correct the >> error >> >> of using 1:nrow(data) by replacing it by seq_len(nrow(data)). >> >> >> >> It's helpful to give example code, but much more helpful if you test >> >> it: yours cannot work without the function ddply() -- this is what >> >> 'self-contained' means in the footer here. >> >> >> >> >> >>> >> >>> Any help is appreciated >> >>> >> >>> ______________________________________________ >> >>> 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. >> >> >> >> >> >> -- >> >> Brian D. Ripley, rip...@stats.ox.ac.uk >> >> Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ >> >> University of Oxford, Tel: +44 1865 272861 (self) >> >> 1 South Parks Road, +44 1865 272866 (PA) >> >> Oxford OX1 3TG, UK Fax: +44 1865 272595 >> > > > ______________________________________________ > 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. > -- Assistant Professor / Dobelman Family Junior Chair Department of Statistics / Rice University http://had.co.nz/ ______________________________________________ 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.