On 1/9/2006 1:27 PM, Liaw, Andy wrote: > If you haven't seen this in your math courses, perhaps this would help: > > http://en.wikipedia.org/wiki/Empty_set >
This is what is so great about Wikipedia: it gives certainty where I'd only call it a fairly standard convention. ;-) Duncan Murdoch > 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 >> >> > > > ------------------------------------------------------------------------------ > Notice: This e-mail message, together with any attachment...{{dropped}} ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel