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.

Reply via email to