If you haven't seen this in your math courses, perhaps this would help:
http://en.wikipedia.org/wiki/Empty_set
which says, in part:
Operations on the empty set
Operations performed on the empty set (as a set of things to be operated
upon) can also be confusing. (Such operations are nullary operations.) For
example, the sum of the elements of the empty set is zero, but the product
of the elements of the empty set is one (see empty product). This may seem
odd, since there are no elements of the empty set, so how could it matter
whether they are added or multiplied (since "they" do not exist)?
Ultimately, the results of these operations say more about the operation in
question than about the empty set. For instance, notice that zero is the
identity element for addition, and one is the identity element for
multiplication.
Andy
From: Martin Morgan>
> I guess I have to say yes, I'd exepct
>
> x <- 1:10
> sum(x[x>10]) ==> numeric(0)
>
> this would be reinforced by recongnizing that numeric(0) is not zero,
> but nothing. I guess the summation over an empty set is an empty set,
> rather than a set containing the number 0. Certainly these
>
> exp(x[x>10]) ==> numeric(0)
> numeric(0) + 1 ==> numeric(0)
>
> would give me pause.
>
>
> Gabor Grothendieck <ggrothendieck at gmail.com> writes:
>
> > The way to think about it is:
> >
> > prod(rep(x,n)) == x^n
> >
> > and that works for n=0 too.
>
> Hmm, Not sure what to put in for x and n? do you mean x == numeric(0),
> n == 0 (0 copies of an empty set), x == ANY n == numeric(0) (an empty
> set of ANYthing), x == numeric(0), n == numeric(0) ? For all of these,
> x^n evaluates to numeric(0).
>
> Martin (Morgan)
>
> Duncan Murdoch <murdoch at stats.uwo.ca> writes:
>
> > 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 <maechler at stat.math.ethz.ch> writes:
> >>
> >>>>>>>> "Ben" == Ben Bolker <bolker
at zoo.ufl.edu>
> >>>>>>>> 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 at r-project.org mailing list
> >>> https://stat.ethz.ch/mailman/listinfo/r-devel
>
> ______________________________________________
> R-devel at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-devel
>
>