R CMD检查:全局变量'mypkgdata'没有可见的绑定

时间:2015-05-20 18:11:30

标签: r package cran

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

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

.getmodules2:全局变量'mypkgdata'

没有可见的绑定

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

3 个答案:

答案 0 :(得分:2)

如果您的DESCRIPTION文件中的LazyData:TRUE,则以下内容应该起作用:

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

如果我在没有MyPackageName :: part的情况下调用它,我也会得到你的注释。

答案 1 :(得分:0)

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

pkgEnv <- new.env(parent=emptyenv())

if(!exists("mypkgdata", pkgEnv)) {
  data("mypkgdata", package="mypkg", envir=pkgEnv)
}

getMyPkgData <- function() {
  pkgEnv[["mypkgdata"]]
}

在使用&#34; mypkgdata&#34;的函数中,我写道:

mypkgdata <- getMyPkgData()

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

答案 2 :(得分:0)

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

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

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