我花了很多时间寻找可能是一个非常基本的问题的答案,但我就是找不到我的问题的解决方案。我发现的最接近的是 this exchange从几年前开始。

在这种情况下,问题是 sysdata.rda 文件在包内正确目录中的位置。那不是我的问题。

我有一些变量可以存储我在包中使用的调色板之类的东西。这些变量仅在我的函数中使用,因此我将它们存储在 R/sysdata.rda 中。但是,当我加载包时,变量没有加载到包环境中。如果我从 sysdata.rda 手动加载数据,那么一切正常。

通过阅读我可以在 R 包中的内部数据中找到的所有内容,我的印象是 R/sysdata.rda 中的数据会自动加载。

这是我用来存储数据的代码。

devtools::use_data(tmpBrks, tmpColors, prcpBrks, prcpChgBrks, 
                   prcpChgBrkLabels, prcpColors, prcpChgColors, 
                   internal = TRUE, overwrite = TRUE) 

这成功地在 R/sysdata.rda 中创建了数据文件,当我手动加载数据时,数据就在文件中。

我需要做什么才能自动加载数据,以便我的包中的函数可以使用它们?

请您参考如下方法:

像往常一样,这是用户无知和糟糕的 R 文档的糟糕组合。资料正在加载并可用于函数。我出错的地方是假设数据在包环境中是可见的。事实并非如此。

据我所知,R\sysdata.rda 文件中的内部数据可用于包中的函数,但不以任何方式可见。创建内部数据文件后,我正在寻找包环境中的数据。当我没有看到它时,我认为它没有加载。当我继续推进我的包开发时,我终于意识到数据是静默加载的,并且可以被包中的函数访问。

正如我的问题获得的两次赞成票所证明的那样,我不是唯一不了解 R\sysdata.rda 内部数据行为的人。希望这个解释可以为其他人节省大量时间来寻找这个实际上并不存在的问题的答案。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!