【发布时间】:2017-08-03 19:55:54
【问题描述】:
(再次尝试这个问题以使其更清楚。)
我正在尝试编写一个包,以便更轻松地从 Web API 访问数据,并决定是否创建查找表和查询默认内部或外部数据,如 R 包的Data chapter 中所述.
据我了解,每个都有缺点。内部数据仅用于包使用的数据,用户不可见。它使用devtools::use_data(x, mtcars, internal = TRUE) 添加到包中,这会将sysdata.rda 添加到R/ 包文件夹中。然而,尽管包“需要”数据表,但我也希望我的数据对用户可见,以便他们可以纠正错误,并且可能通过拉取请求添加额外的数据文件以扩展包的功能。此外,由于我正在处理多个文件,目前并非全部可用,因此每次发生更改时将所有文件重新捆绑到R/sysdata.rda 似乎不方便。
另一种方法是使查找表和查询默认外部数据,添加默认internal = FALSE 标志:devtools::use_data(x, mtcars),将mtcars.rda 添加到data/ 包文件夹。优点是这些数据对用户来说是清晰可见的,但缺点是我不知道如何从包函数中访问它而不会在运行devtools::check():object 'querydefaults' not found 时出错。这样做的正确方法是什么?
【问题讨论】:
-
有像nycflights13 这样的包为用户提供延迟加载的数据。那是你想要遵循的范式吗?如果是这样,请在 github 上查看他们的包结构。您的问题并没有明确说明要求是什么。
-
根据here的定义,该包是所有外部数据;没有访问这些数据集的内部函数。我希望能够像 nycflights 一样提供数据,但也有使用数据的功能。
-
有什么可以阻止这种情况吗?您如何尝试在您的包中使用这些数据框?
-
我指的是他们的名字:
x <- lookuptable它有效。问题是当我运行devtools::check()时出现错误。我可以忽略这一点,但这不是一个好主意,因为这可能意味着我做错了什么。