« Return to Thread: Warning when trying to access a variable out of scope?

Re: Warning when trying to access a variable out of scope?

by Duncan Murdoch-2 :: Rate this Message:

Reply to Author | View in Thread

On 7/2/2009 2:17 PM, Steve Lianoglou wrote:

> Hi,
>
> I was wondering if I could get R to warn me, or give me a rude  
> awakening somehow, if I'm accessing a variable that is out of my  
> function's scope.
>
> For example, often times I'm creating a function as I'm testing it in  
> the REPL, copying and pasting between both.
>
> As a simple example, I might end up with a function like:
>
> f <- function(a, b) {
>    a + b.test
> }
>
> Where b.test was defined in my workspace as I'm mucking about in the  
> REPL, but "clearly" I should have written:
>
> f <- function(a,b) {
>    a + b
> }
>
> I could go on for a while in my session w/o noticing the problem  
> (since b.test is in my global env), and unbeknownst to me, my function  
> will keep accessing the "b.test" variable when I really want it to  
> work on the "b" var that I'm passing in to it.
>
> Is there some setting or someway I can get R to warn me that "b.test"  
> is being accessed outside the scope of my function?

Not really, but the codetools package can analyze your functions and
tell you which ones do things like that.  For example,

 > f <- function(a, b) {
+    a + b.test
+ }
 > checkUsage(f)
<anonymous>: no visible binding for global variable ‘b.test’

or

 > checkUsageEnv(globalenv())
f: no visible binding for global variable ‘b.test’

This is normally used in the package test code, but you can use it on
individual functions or environments if you want.

Duncan Murdoch

______________________________________________
R-help@... mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

 « Return to Thread: Warning when trying to access a variable out of scope?