首页 > 解决方案 > 如何在 R 包中给数据一个别名?

问题描述

给 R 包中的函数一个别名是直截了当的。例如

#' @rdname my_function_name
my_alias <- my_function_name

包中包含的数据文件如何实现同样的效果?

到目前为止我尝试过的

我不知道如何给 R 包中的数据文件一个别名。但是,我可以简单地将同一个文件放在包中两次,然后再给它一个不同的名称。这将有一个明显的缺点,即占用比必要更多的空间,所以如果可能的话,我想找到一种更好的方法。

标签: rroxygen2

解决方案


好吧,我确实设法使我的解决方法对用户可见,但感觉非常非常hacky。它看起来像这样:

#' @export pkgdata
makeActiveBinding("pkgdata", env = asNamespace("mypkg"), fun = function(ignored) {
    data("mydata", package = "mypkg", envir = environment())
    mydata
})

通过envir = environment()在调用中指定,data我们确保数据被加载到函数的调用环境中,因此可以随后返回。在那之后,它似乎mypkg::pkgdata会起作用,如果你pkgdata@aliasesof 中定义mydata,甚至R CMD check通过?


推荐阅读