在我的包中使用例如 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.quotedsubstitute。 @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 检查生成的注释?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 laravel 6 在我的包中使用 auth 进行自定义防护?

Symfony 3.4 在我的包中使用视图

如何将数据集放入 R 包中

R:在自编写的包中使用magrittr管道运算符

Laravel 在包中使用自定义 USER-Model

如何在 R 包中正确使用其他包中的函数