数据未从 R 中的命名空间导出

Data not exported from namespace in R

我已经在我的笔记本电脑上根据 Hadley 关于 Devtools、Roxygen2 等的大量文档设置并定期将我的 R 包更新为 GitHub。昨天我决定改用我的主 PC,现在希望将更改推送到 GitHub。输入 document() 后出现以下错误:

Error: 'Adult_Females' is not an exported object from 'namespace:gbm.auto'

Adult_Females是/Data中第一个数据文件的名称。根据 this(向下滚动到 'Data')

“data/ 中的文件不使用通常的命名空间机制,不需要导出。”

所以...男人要做什么?我没有以任何方式编辑 Adult_Females 并且我编辑的 R 脚本没有引用它。我怀疑所有的数据文件都会弹出这个错误,而这恰好是第一个,但这是目前的推测。

提前致谢。 install_github("SimonDedman/gbm.auto")想看的话

2020/01/25 编辑:看起来我已经修好了。 26/11/19 的提交看到 /Data 和添加的所有 RData 文件,随后的提交删除了相同的 /data 文件夹和文件。不确定是不是我自己做的,想不通为什么我会突然决定这样做,但这样的谜团现在已经消失在时间的流沙中。此更改以及 document() 和提交导致 .R 文件作为 export()s 从 NAMESPACE 中删除,RData 文件不再触发名义上的“数据未导出”问题,即使在描述中的任何地方都没有指出,名称空间,也不是文件本身。愿这种怪事成为一座灯塔,警告其他人注意我过去 3 年所困的岩石!

我在编写包含数据集的 R 包时遇到了类似的问题。我猜你一定是用不同的名字保存了数据集。

例如,您可以这样写:

devtools:::use_data(YourDataSetName, pkg = "Path_to_Pkg/data", internal = FALSE)

但是在您的 data.R 文件中,您在末尾指定了一个数据集名称 而不是 YourDataSetName(假设您在这里遵循了 Hadley 的说明:http://r-pkgs.had.co.nz/data.html).

确保您保存到 "data" 文件夹的数据对象与您在 data.R 文件中指定的相同。


注意: use_data 现在是 usethis 包的一部分。

对于数据对象,名称必须在四 (4) 个位置匹配,因此请全部检查:

  1. data/foo.rda 文件的名称
  2. data/foo.rda 文件中对象的名称
  3. R/foo.R 文件的名称
  4. R/foo.R 文件末尾的字符串

所有四项都必须匹配——在本例中为 'foo'。如果更改 foo.rda 和 foo.R 文件的名称,比如 bar.rda 和 bar.R,很容易忘记将 .rda 文件中的对象从 'foo' 到 'bar.' 通常最容易加载文件、重命名对象并以新名称保存文件:

load('data/foo.rda')
bar <- foo
save(bar, file='data/bar.rda')

如果不这样做,您将收到有关未从命名空间加载对象的无用错误。您不需要 @export 数据对象,而是确保名称在所有地方都匹配。