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, > >>>> 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