我有一个与How can I handle R CMD check "no visible binding for global variable" notes when my ggplot2 syntax is sensible?相似但又不同的问题 .
在那种情况下,通过使用aes_string而不是aes,一切都顺利进行 . 然而,这与plyr afaik无法实现 .
例如,当我通过ddply引用数据框中的列名时会出现问题 .
ddply(mydf, .(VarA, VarB, VarC, VarD), summarize, sum = sum(VarE))
#
# MyPackage: no visible binding for
# global variable ‘VarA’
这段代码是完全有效和理智的,即使我理解使用NOTE,它们仍然会混淆输出窗口中的其他消息,使得包开发变得困难,并且实际上强制开发人员忽略NOTE .
摆脱这些笔记的正确方法是什么?或者,或者以R CMD检查接受而不给出NOTE的方式编写代码的正确方法是什么?
最好,迈克尔
2 回答
有几种解决方法 . 最简单的方法是将
NULL
分配给没有可见绑定的所有变量 .更优雅的解决方案是使用
as.quoted
和substitute
. 由@Dr更新 . Mike:对as.quoted
的调用需要用c()
封装 .您可以通过声明全局变量来避免CMD检查警告:
请在使用前阅读
?globalVariables
,并确保将相应的R版本添加到DESCRIPTION中 .通过引用避免使用全局变量总是更可取的 .