From murdoch at stats.uwo.ca  Mon Apr 12 17:08:12 2010
From: murdoch at stats.uwo.ca (Duncan Murdoch)
Date: Mon, 12 Apr 2010 11:08:12 -0400
Subject: [Rd] R CMD check tells me 'no visible binding for global
 variable ', what does it mean?
In-Reply-To: <Zen-1O1Kzf-0000MF-9i@smarthost01.mail.zen.net.uk>
References: <Zen-1O1Kzf-0000MF-9i@smarthost01.mail.zen.net.uk>
Message-ID: <4BC3375C.4060007@stats.uwo.ca>

On 12/04/2010 10:51 AM, Michael Dewey wrote:
> When I run R CMD check on a package I have recently started work on I 
> get the following:
>
> * checking R code for possible problems ... NOTE
> addlinear: no visible binding for global variable 'x'
>
> I appreciate that this is only a NOTE and so I assume is R's 
> equivalent of 'This is perfectly legal but I wonder whether it is 
> really what you intended' but I would like to understand it.
>
> In the relevant function addlinear the following function is defined locally:
>
>     orfun <- function(x, oddsratio) {1/(1+1/(oddsratio * (x/(1-x))))}
>
> and then used later in curve
>
>        curve(orfun(x, exp(estimate)), from = 0.001, to = 0.999, add = TRUE)
>
> These are the only occurrences of 'x'.
>
> Is it just telling me that I have never assigned a value to x? Or is 
> it more sinister than that? As far as I can tell the function does 
> what I intended.

The curve() function evaluates the first argument in a strange way, and 
this confuses the code checking.  (The variable name "x" is special to 
curve().)

I think you can avoid the warning by rewriting that call to curve() as

curve(function(x) orfun(x, exp(estimate)), from = 0.001, to = 0.999, add = TRUE)

Duncan Murdoch



[Rd] R CMD check tells me 'no visible binding for global variable ', what does it mean?
Duncan Murdoch