这个问题与其他人在这个问题上略有不同 - 我确实有一个名为“mypkgdata”的变量:
我正在编写一个附带数据集的软件包。从包内计算需要该数据集。在DESCRIPTION文件中,我为此指定了“LazyData”,这样当任何人加载包时,数据集总是存在。但是,当我运行支票时,我得到:
.getmodules2:全局变量'mypkgdata'
没有可见的绑定解决这个问题的正确方法是什么?
答案 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")