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