如何从我的包中的另一个包加载数据

its*_*ami 5 r package-development

我正在开发的包中的一个函数使用acs::包(fips.state对象)中的数据集。我可以通过以下方式将这些数据加载到我的工作环境中

data(fips.state, package = "acs"),
Run Code Online (Sandbox Code Playgroud)

但我不知道为我的函数加载这些数据的正确方法。我试过了

 @importFrom acs fips.state,
Run Code Online (Sandbox Code Playgroud)

但不会导出数据集。我不想复制数据并将其保存到我的包中,因为这似乎是一种糟糕的开发实践。

我都对着http://r-pkgs.had.co.nz/namespace.htmlhttp://kbroman.org/pkg_primer/pages/docs.htmlhttps://cran.r-project.org /doc/manuals/r-release/R-exts.html#Data-in-packages,但它们不包括有关从一个包到另一个包共享数据集的任何信息。

基本上,我如何制作另一个包中的函数所需的数据集,供我的包中的函数使用?

ms6*_*609 3

如果您无法控制acspackage,那么这acs::fips.state似乎是您最好的选择,正如@paleolimbot 所建议的那样。

如果您要频繁调用fips.state,那么我建议通过 制作本地副本fips.state <- acs::fips.state,因为从其他包查找对象的成本很小,您最好避免多次调用。

但是,如果您能够影响acs(即使您不能,我认为这是一个有用的概括),那么mikefc会建议一个替代解决方案,即将fips.state对象设置为包的内部对象,然后将其导出:

usethis::use_data(fips.state, other.data, internal = FALSE)
Run Code Online (Sandbox Code Playgroud)

然后在命名空间中:

export(fips.state)

或者如果使用 roxygen2:

#' Fips state
#' @name fips.state
#' @export
"fips.state"
Run Code Online (Sandbox Code Playgroud)

然后在你自己的包中,你可以简单地@importFrom acs fips.state.