From murdoch at stats.uwo.ca  Sun Feb 10 00:08:13 2008
From: murdoch at stats.uwo.ca (Duncan Murdoch)
Date: Sat, 09 Feb 2008 18:08:13 -0500
Subject: [Rd] print.fitdistr buglet
In-Reply-To: <e303ddae0802090833u6b9b99e2k60382628e9924ab0@mail.gmail.com>
References: <e303ddae0802090833u6b9b99e2k60382628e9924ab0@mail.gmail.com>
Message-ID: <47AE325D.1090907@stats.uwo.ca>

On 09/02/2008 11:33 AM, Enrico Rossi wrote:
> Dear developers,
> 
> There's a small bug in print.fitdistr that can cause output to be printed
> twice, but only if print is called explicitly:
> 
>> fit<-fitdistr(rt(1000,3),"t")
> There were 11 warnings (use warnings() to see them)
>> fit
>         m             s            df
>   -0.02181723    1.00145296    3.13723878
>  ( 0.03865057) ( 0.03999447) ( 0.33298377)
>> print(fit)
>         m             s            df
>   -0.02181723    1.00145296    3.13723878
>  ( 0.03865057) ( 0.03999447) ( 0.33298377)
>         m             s            df
>   -0.02181723    1.00145296    3.13723878
>  ( 0.03865057) ( 0.03999447) ( 0.33298377)
> 
> Most likely, the function print.fitdistr doesn't return the input invisibly.

That's a correct analysis, but fitdistr is in MASS, so the report should 
go to Brian Ripley, the maintainer.  I've cc'd him.

I did a quick look through other print methods using this code:

for (name in methods("print")) {
   fn <- do.call("getAnywhere", list(name))$objs[[1]]
   body <- body(fn)
   len <- length(body)
   cat(name, ":  ", deparse(body[[len]]), "\n")
}

and turned up a few other cases in base packages; I'll fix them as 
appropriate.

Duncan Murdoch



[Rd] print.fitdistr buglet
Duncan Murdoch