Duncan Murdoch <[EMAIL PROTECTED]> writes: > 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
Yes, thanks for the refresher and sorry for the noise. Martin >> 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 attachments, contains >> information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station, New >> Jersey, USA 08889), and/or its affiliates (which may be known outside the >> United States as Merck Frosst, Merck Sharp & Dohme or MSD and in Japan, as >> Banyu) that may be confidential, proprietary copyrighted and/or legally >> privileged. It is intended solely for the use of the individual or entity >> named on this message. If you are not the intended recipient, and have >> received this message in error, please notify us immediately by reply e-mail >> and then delete it from your system. >> ------------------------------------------------------------------------------ ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel