Here is a function I use to return the non-NULL elements of a list: delete.NULLs <- function (x.list) { x.list[unlist(lapply(x.list, length) != 0)] }
On Thu, Jul 22, 2010 at 2:22 PM, Ted Byers <r.ted.by...@gmail.com> wrote: > Here is the function that makes the data.frames in the list: > > funweek <- function(df) > if (length(df$elapsed_time) > 5) { > res = fitdist(df$elapsed_time,"exp") > year = df$sale_year[1] > sample = df$sale_week[1] > mid = df$m_id[1] > estimate = res$estimate > sd = res$sd > samplesize = res$n > loglik = res$loglik > aic = res$aic > bic = res$bic > chisq = res$chisq > chisqpvalue = res$chisqpvalue > chisqdf = res$chisqdf > if (!is.null(estimate) && !is.null(sd) && !is.null(loglik) && > !is.null(aic) && !is.null(bic) && > !is.null(chisq) && !is.null(chisqpvalue) && !is.null(chisqdf)) { > rv = > data.frame(mid,year,sample,samplesize,estimate,sd,loglik,aic,bic,chisq,chisqpvalue,chisqdf) > rv > } > } > > I use the following, with different data, successfully: > > z <- > lapply(split(moreinfo,list(moreinfo$m_id,moreinfo$sale_year,moreinfo$sale_week),drop > = TRUE), funweek) > qqq <- z[, c('mid', 'year', 'sample', 'samplesize', 'estimate', 'sd', > 'loglik', 'aic','bic', 'chisq', 'chisqpvalue', 'chisqdf')] > ndf2 <- do.call(rbind, qqq) > > > However, I am now getting the following error: > >> qqq <- z[, c('mid', 'year', 'sample', 'samplesize', 'estimate', 'sd', >> 'loglik', 'aic','bic', 'chisq', 'chisqpvalue', 'chisqdf')] >> Error in z[, c("mid", "year", "sample", "samplesize", "estimate", "sd", : >> incorrect number of dimensions >> > > > My suspicion is that it is due to the fact that sometimes one or more of the > elements in my conditional block is null, so nothing is returned and that > this puts a null element into z. Here is a selection of a couple elements > so you can see what is in 'z'. > > $`353.2010.0` >> mid year sample samplesize estimate sd loglik aic >> rate 353 2010 0 17 0.06463837 0.01567335 -63.5621 129.1242 >> bic chisq chisqpvalue chisqdf >> rate 129.9574 14.90239 0.001901994 3 >> >> $`355.2010.0` >> NULL >> >> $`376.2010.0` >> mid year sample samplesize estimate sd loglik aic >> rate 376 2010 0 6 0.07228863 0.02950606 -21.76253 45.52506 >> bic chisq chisqpvalue chisqdf >> rate 45.31682 16.46848 4.946565e-05 1 >> > > You see the value for rowname = `355.2010.0` is NULL., and it is my guess > that this leads to the error I show above. But I can't confirm that yet, > because I don't yet know how to get rid of rows that have a row name but > only NULL as the value. > > I haven't seen this dealt with in the references I have read so far. > > I think I may be able to deal with it by creating dummy values for the > fields the data frame requires, and then use SQL to remove them, but I'd > rather not have to resort to that if I can avoid it. > > I can't believe there isn't something in the base package for R that would > easily handle this, but not knowing the name of the function to look at, I > haven't found it yet. > > Any information would be appreciated. > > Thanks > > Ted > > [[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. > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? ______________________________________________ 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.