Daniel Braithwaite
2014-Aug-17 01:36 UTC
[R] "no visible binding for global variable" and with() vs. within()
R CMD check does not object to this code when checking a package: foo1 <- function (bar) { with(bar, { x }) } but produces a warning: foo2: no visible binding for global variable 'x' in response to this: foo2 <- function (bar) { within(bar, { x }) } Is this an R bug, or at least, an inadvertent inconsistency? Here is sessionInfo() from my machine, right after starting an interactive session: R version 3.1.1 (2014-07-10) Platform: x86_64-apple-darwin10.8.0 (64-bit) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base [[alternative HTML version deleted]]
Duncan Murdoch
2014-Aug-17 11:05 UTC
[R] "no visible binding for global variable" and with() vs. within()
On 16/08/2014, 9:36 PM, Daniel Braithwaite wrote:> R CMD check does not object to this code when checking a package: > > foo1 <- function (bar) { > with(bar, { > x }) > } > > but produces a warning: > > foo2: no visible binding for global variable 'x' > > in response to this: > > foo2 <- function (bar) { > within(bar, { > x }) > } > > Is this an R bug, or at least, an inadvertent inconsistency? Here is > sessionInfo() from my machine, right after starting an interactive session:I'm not sure, but I suspect it's an intentional inconsistency. The code that checks for use of globals can't do anything in with() or within() code, so bugs can slip by if you use those. I think with() had been around for a long time and was in wide use when that test was added, but within() is newer, and it was less disruptive to warn about it, so the warning has been left in. (I don't remember whether the test came before or after within() was introduced.) So if you want to avoid the warning, don't use within(). Duncan Murdoch> > R version 3.1.1 (2014-07-10) > Platform: x86_64-apple-darwin10.8.0 (64-bit) > > locale: > [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 > > attached base packages: > [1] stats graphics grDevices utils datasets methods base > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org 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. >