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 <[EMAIL PROTECTED]> 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 <[EMAIL PROTECTED]> 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 <[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 > > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel