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

Reply via email to