Message-ID: <CAJDot1oj5rTU+y1b_KHjGb6Up+B-3j3-6AZqVgfXox6i3Bvf_g@mail.gmail.com>
Date: 2013-01-16T01:32:00Z
From: Saptarshi Guha
Subject: Codetools Query (repost)
Sorry for reposting, i keep forgetting this should be plain text.
Will not make this mistake again
Hello,
The following code
moo <- function(a=1){ x=1; x=x+y}
funs <- new.env()
enter <- function(type, v, e, w){
assign(v, TRUE, funs)
}
library(codetools)
collectUsage(moo, enterGlobal = enter)
adds + to the environment funs i.e.
funs: "=" "{" "+" "y"
How can i ignore variables which are present in base, utils, stat
environments from being added (equivalently(?) symbols present in R
when R is started)
I tried
funs <- new.env()
enter <- function(type, v, e, w){
if(codetools:::isBaseVar(v, w$env) || codetools:::isStatsVar(v, w$env)
|| codetools:::isUtilsVar(v, w$env) || v == "Quote")
return()
assign(v, TRUE, funs)
}
library(codetools)
collectUsage(moo, enterGlobal = enter)
but this threw
Error in exists(v, envir = e, inherits = FALSE, mode = "function") :
invalid 'envir' argument
Cheers