在我的包中使用例如 ddply 时,如何摆脱 R CMD 检查生成的注释?
Posted
技术标签:
【中文标题】在我的包中使用例如 ddply 时,如何摆脱 R CMD 检查生成的注释?【英文标题】:How do I get rid of the NOTE's generated by R CMD check when using for example ddply in my package? 【发布时间】:2015-05-05 06:50:49 【问题描述】:我有一个与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’
这段代码是完全有效和理智的,即使我理解注释的使用,它们仍然会混淆输出窗口中的其他消息,使包开发成为一种痛苦,实际上迫使开发人员忽略注释。
摆脱这些笔记的正确方法是什么?或者,以 R CMD check 接受而不给出 NOTE 的方式编写代码的正确方法是什么?
最好, 迈克尔
【问题讨论】:
【参考方案1】:有几种解决方法。最简单的方法是将NULL
分配给所有没有可见绑定的变量。
VarA <- VarB <- VarC <- VarD <- VarE <- NULL
更优雅的解决方案是使用as.quoted
和substitute
。
@Dr. 更新。 Mike:对as.quoted
的调用需要用c()
封装。
ddply(mydf,
as.quoted(c('VarA', 'VarB', 'VarC', 'VarD')),
summarize,
sum = sum(substitute(VarE)))
【讨论】:
【参考方案2】:您可以通过声明全局变量来避免 CMD 检查警告:
globalVariables(c("VarA", "VarB"))
使用前请阅读?globalVariables
,并确保将适当的 R 版本添加到您的说明中。
通过引用避免使用全局变量总是可取的。
【讨论】:
以上是关于在我的包中使用例如 ddply 时,如何摆脱 R CMD 检查生成的注释?的主要内容,如果未能解决你的问题,请参考以下文章