【发布时间】:2019-01-13 12:33:17
【问题描述】:
在我正在开发的包中,我需要定义一个新单位:相当于 100 英尺的飞行高度 (FL)。
units 包提供了以下可能性:
units::install_conversion_constant("FL", "ft", 100)
为了使包测试 (devtools::test()) 和包检查 (devtools::test()) 都适用于使用此用户定义单元 I discovered 的单元测试,我需要在包加载阶段注册它。
这是我所做的:
在zzz.R(根据"When you do need side-effects" 部分的新文件):
# register flight levels (FL) as a unit when loading this package
.onLoad <- function(libname, pkgname) {
# install user-define unit for flight level
units::install_conversion_constant("FL", "ft", 100)
invisible()
}
# register flight levels (FL) as a unit when loading this package
.onUnload <- function(libname, pkgname) {
# uninstall user-define unit for flight level
units::remove_symbolic_unit("FL")
invisible()
}
如果不这样做并将单元注册码放入某个 R/unit-conversion.R 文件中,则 devtools::test() 会成功,但 devtools::check() 会失败。
上面的解决方案是在包中注册(和删除[也应该这样做吗?])一个新单元的正确方法吗?
【问题讨论】:
-
IMO 你做对了。当其他人只使用和导入您的一个功能时,您需要确保一切正常,因此 onLoad 是要走的路
-
@RolandASc
.onUnload怎么样,有什么意见吗? -
我不会因为你不这样做而指责你,但就个人而言,我喜欢你这样做。我也认为下面提供的答案并没有真正触及你的情况。同时,由于我没有任何修改建议,我无法提供答案:)
标签: r r-package units-of-measurement