[R] Bug in predict.lm?

jlh.membership jlh.membership at gmail.com
Sat Nov 16 19:27:04 CET 2013


This definitely looks like a bug and should really be reported. Denes' diagnosis is right on.

I get the bug here: 
> z <- lm(rnorm(10)~I(1:10))
> 
> predict(z, int="conf", scale=1)
Error in predict.lm(z, int = "conf", scale = 1) : object 'w' not found

And also here:
> z <- lm(rnorm(10)~I(1:10))
> 
> predict(z, se.fit=T, scale=1)
Error in predict.lm(z, se.fit = T, scale = 1) : object 'w' not found

**
platform       x86_64-w64-mingw32          
arch           x86_64                      
os             mingw32                     
system         x86_64, mingw32             
status                                     
major          3                           
minor          0.2                         
year           2013                        
month          09                          
day            25                          
svn rev        63987                       
language       R                           
version.string R version 3.0.2 (2013-09-25)
nickname       Frisbee Sailing    
**

-----Original Message-----
From: peter dalgaard [mailto:pdalgd at gmail.com] 
Sent: Saturday, November 16, 2013 4:36 AM
To: Charles Berry
Cc: r-help
Subject: Re: [R] Bug in predict.lm?


On 16 Nov 2013, at 03:06 , Charles Berry <ccberry at ucsd.edu> wrote:

> Rolf Turner <r.turner <at> auckland.ac.nz> writes:
> 
>> 
>> 
>> I *do* see the same phenomenon that Bert describes and the code of
>> predict.lm()
>> *does* appear to contain a bug.  There is a line:
>> 
> [snip]
> 
>> 
>> The operative difference between my set-up and Chuck's is that I am 
>> using version 3.0.2 Patched.  So I am very puzzled as to why Chuck 
>> does *not* get an error thrown!
>> 
> 
> [rest deleted]
> 
> The answer is that I made a rookie error.
> 
> I ran
> 
>  example(predict.lm)
> 
> before trying Bert's ECM.
> 
> And then I did not bother to see what example(predict.lm) left lying 
> around in R_GlobalEnv ...
> 
> As you can probably guess, there was an object called 'w'.
> 
> So predict.lm finds it and is.null(w) is FALSE.
> 
> Mea culpa!

Hmm, maybe, but this is the sort of thing that code analysis tries to catch (as in "no visible binding for global variable 'w'").
Apparently, the code checker is not smart enough to detect cases where a local variable is _sometimes_ not defined.

--
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list