2

我有一个类似但不同的问题,当我的 ggplot2 语法合理时,如何处理 R CMD 检查“全局变量没有可见绑定”注释?.

在那种情况下,通过使用 aes_string 而不是 aes,一切都可以顺利进行。但是,这对于 plyr afaik 是不可能的。

例如,当我通过 ddply 引用数据框中的列名时,就会出现问题。

ddply(mydf, .(VarA, VarB, VarC, VarD), summarize, sum = sum(VarE))
#
# MyPackage: no visible binding for
#   global variable ‘VarA’

这段代码是完全有效和理智的,即使我理解注释的使用,它们仍然会混淆输出窗口中的其他消息,使包开发成为一种痛苦,实际上迫使开发人员忽略注释。

摆脱这些笔记的正确方法是什么?或者,以 R CMD check 接受而不给出 NOTE 的方式编写代码的正确方法是什么?

最好的,迈克尔

4

2 回答 2

5

有几种解决方法。最简单的方法是只分配NULL给没有可见绑定的所有变量。

VarA <- VarB <- VarC <- VarD <- VarE <- NULL

一个更优雅的解决方案是使用as.quotedand substitute。@Dr. 更新。Mike:调用as.quoted需要用c().

ddply(mydf, 
      as.quoted(c('VarA', 'VarB', 'VarC', 'VarD')), 
      summarize, 
      sum = sum(substitute(VarE)))
于 2015-03-04T10:37:58.813 回答
0

您可以通过声明全局变量来避免 CMD 检查警告:

globalVariables(c("VarA", "VarB"))

?globalVariables在使用前阅读,并确保将适当的 R 版本添加到您的说明中。

通过引用避免使用全局变量总是更可取的。

于 2017-01-16T18:22:12.530 回答