如何解决 R CMD CHECK 出现 NOTE:: No visible binding for global variable

NSE (非标准话求值) 允许直接对数据的变量进行操作,如subset()函数。虽然初始目的是为了交互运行的时候减少代码输入方便计算,随着 tidyverse 兴起,大大增加了数据分析 效率,NSE 用途也越来越广,许多新开发的包都依赖一些采用了 NSE 的函数。在 R CMD check的时候出现 就出现由 NSE 引起的 NOTE no visible binding for global variable, Undefined global functions or variables 。这是由于 实际函数运行环境中并不包含这些变量,所以在R CMD check 的时候会抛出NOTE。虽然 CRAN 中允许有NOTE,为了维护方便最好是把 NOTE 也都解决。有两种解决办法。

1. 用globalVariables(c("")), 如可以在R/下新建一个脚本,调用

globalVariables()声明所有变量

常用的是通过.onLoad函数:

.onLoad <- function (libname, pkgname)
{
  # set global variables in order to avoid CHECK notes
  utils::globalVariables ("")
  invisible ()
}

2. 使用rlang::.data,记得依赖中加入rlang和导出.data,以dplyr::filter为例

dplyr::filter(df, var > 1)
# 修改为
dplyr::filter(df, .data$var > 1)

我之前是采用的第一种方法,但是总是忘记哪些变量变量需要添加,现在采用第二种方法 在写代码的时候直接用.data,缺点就是跟平时交互式计算的时候写法不一致,有时候也 会忘记。

参考:

如何解决 R CMD check 出现 NOTE: "no visible binding for global variable" | 一路嘿嘿 (caoyang.tech)如何解决 R CMD check 出现 NOTE: "no visible binding for global variable" | 一路嘿嘿如何解决 R CMD check 出现 NOTE: "no visible binding for global variable" | 一路嘿嘿 (caoyang.tech)

Programming with dplyr • dplyr (tidyverse.org)

How can I handle R CMD check "no visible binding for global variable" notes when my ggplot2 syntax is sensible? - Stack Overflow

你可能感兴趣的:(R编程练习,r语言,笔记)