【问题标题】:R CMD check: no visible binding for global variable ‘mypkgdata’ [duplicate]R CMD检查:全局变量'mypkgdata'没有可见绑定[重复]
【发布时间】:2015-08-02 03:39:51
【问题描述】:

这个问题与其他问题略有不同——我确实有一个名为“mypkgdata”的变量:

我正在编写一个附带数据集的包。包内的计算需要此数据集。在DESCRIPTION文件中,我为此指定了“LazyData”,这样当任何人加载包时,数据集总是存在的。但是,当我运行检查时,我得到:

.getmodules2: 全局变量“mypkgdata”没有可见的绑定

解决这个问题的正确方法是什么?

【问题讨论】:

    标签: r package cran


    【解决方案1】:

    如果您的说明文件中有 LazyData: TRUE,则以下内容应该有效:

    x <- MyPackageName::mypkgdata
    # ... your calculations using x
    

    如果我尝试在没有 MyPackageName:: 部分的情况下调用它,我也会收到你的注释。

    【讨论】:

      【解决方案2】:

      这是我解决它的方法。我在包中创建了一个自定义环境,在这个环境中加载数据集,并写了一个返回数据集的函数:

      pkgEnv <- new.env(parent=emptyenv())
      
      if(!exists("mypkgdata", pkgEnv)) {
        data("mypkgdata", package="mypkg", envir=pkgEnv)
      }
      
      getMyPkgData <- function() {
        pkgEnv[["mypkgdata"]]
      }
      

      在使用“mypkgdata”的函数中,我写道:

      mypkgdata <- getMyPkgData()
      

      另外,我放弃了延迟加载数据,因为它不再需要。

      【讨论】:

        【解决方案3】:

        我认为不应将包中的数据标记为不可见。但是,解决方法是

        if(getRversion() >= "2.15.1")  utils::globalVariables("mypkgdata")
        

        比较https://stackoverflow.com/a/17807914/3805440

        【讨论】:

          猜你喜欢
          • 2011-12-27
          • 2015-11-21
          • 2018-12-26
          • 2022-01-12
          • 2018-02-09
          • 2014-06-21
          • 2014-08-07
          相关资源
          最近更新 更多