But this thread seems to have pointed to some inconsistencies: > cumprod( numeric(0) ) numeric(0) > cumsum( numeric(0) ) numeric(0)
shouldn't this give the same as prod() and sum() in this case? Same with cummin() and cummax(). Kjetil On 1/9/06, Duncan Murdoch <[EMAIL PROTECTED]> wrote: > > On 1/9/2006 12:40 PM, Martin Morgan wrote: > > I'm a little confused. I understand that numeric(0) means an empty > > numeric vector, not the number 0 expressed as numeric. As it is now, > > prod(numeric(0)) generates something -- a vector of length 1 > > containing the number 1 -- from nothing. I would have expected > > > > prod(numeric(0)) ==> numeric(0) > > > > this is consistent with > > > > numeric(0) ==> numeric(0) > > numeric(0) * 1 ==> numeric(0) > > cumprod(numeric(0)) ==> numeric(0) > > > > and, because concatenation occus before function evaluation, > > > > prod(c(numeric(0),1)) ==> prod( c(1) ) ==> 1 > > > > I would expect sum() to behave the same way, e.g., sum(numeric(0)) ==> > > numeric(0). From below, > > > > I think the code below works as I'd expect. Would you really like the > last answer to be numeric(0)? > > > x <- 1:10 > > sum(x) > [1] 55 > > sum(x[x>5]) > [1] 40 > > sum(x[x>10]) > [1] 0 > > Duncan Murdoch > > >> >>>> consider exp(sum(log(numeric(0)))) ... ?) > >> >> > >> >> That's a fairly standard mathematical convention, which > >> >> is presumably why sum and prod work that way. > >> >> > >> >> Duncan Murdoch > > > > I would have expected numeric(0) as the result (numeric(0) is the > > result from log(numeric(0)), etc). > > > > Martin (Morgan) > > > > > > Martin Maechler <[EMAIL PROTECTED]> writes: > > > >>>>>>> "Ben" == Ben Bolker <[EMAIL PROTECTED]> > >>>>>>> on Sun, 08 Jan 2006 21:40:05 -0500 writes: > >> > >> Ben> Duncan Murdoch wrote: > >> >> On 1/8/2006 9:24 PM, Ben Bolker wrote: > >> >> > >> >>> It surprised me that prod(numeric(0)) is 1. I guess if > >> >>> you say (operation(nothing) == identity element) this > >> >>> makes sense, but ?? > >> >> > >> >> > >> >> What value were you expecting, or were you expecting an > >> >> error? I can't think how any other value could be > >> >> justified, and throwing an error would make a lot of > >> >> formulas more complicated. > >> >> > >> >>> > >> >> > >> >>>> consider exp(sum(log(numeric(0)))) ... ?) > >> >> > >> >> That's a fairly standard mathematical convention, which > >> >> is presumably why sum and prod work that way. > >> >> > >> >> Duncan Murdoch > >> > >> Ben> OK. I guess I was expecting NaN/NA (as opposed to > >> Ben> an error), but I take the "this makes everything else > >> Ben> more complicated" point. Should this be documented or > >> Ben> is it just too obvious ... ? (Funny -- I'm willing to > >> Ben> take gamma(1)==1 without any argument or suggestion > >> Ben> that it should be documented ...) > >> > >> see? so it looks to me as if you have finally convinced > >> yourself that '1' is the most reasonable result.. ;-) > >> > >> Anyway, I've added a sentence to help(prod) {which matches > >> the sentence in help(sum), BTW}. > >> > >> Martin > >> > >> ______________________________________________ > >> R-devel@r-project.org mailing list > >> https://stat.ethz.ch/mailman/listinfo/r-devel > > ______________________________________________ > R-devel@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel > [[alternative HTML version deleted]] ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel