在我的包中使用例如 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?
我有一个与 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 的用法,它们仍然会混淆输出中的其他消息 windows 使包开发变得痛苦并实际上迫使开发人员忽略 NOTE .
删除这些注释的正确方法是什么?或者,以 R CMD 检查接受而不给出注释的方式编写代码的正确方法是什么?
最好的,
迈克尔
有几种解决方法。最简单的方法是将 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)))
您可以通过声明全局变量来避免 CMD 检查警告:
globalVariables(c("VarA", "VarB"))
请在使用前阅读?globalVariables
,并确保将适当的 R 版本添加到您的描述中。
最好通过引用避免使用全局变量。
我有一个与 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 的用法,它们仍然会混淆输出中的其他消息 windows 使包开发变得痛苦并实际上迫使开发人员忽略 NOTE .
删除这些注释的正确方法是什么?或者,以 R CMD 检查接受而不给出注释的方式编写代码的正确方法是什么?
最好的, 迈克尔
有几种解决方法。最简单的方法是将 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)))
您可以通过声明全局变量来避免 CMD 检查警告:
globalVariables(c("VarA", "VarB"))
请在使用前阅读?globalVariables
,并确保将适当的 R 版本添加到您的描述中。
最好通过引用避免使用全局变量。