首页 文章

在我的软件包中使用ddply时,如何摆脱R CMD检查生成的NOTE?

提问于
浏览
2

我有一个与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 回答

  • 5

    有几种解决方法 . 最简单的方法是将 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)))
    
  • 0

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

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

    请在使用前阅读 ?globalVariables ,并确保将相应的R版本添加到DESCRIPTION中 .

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

相关问题