【发布时间】:2019-10-14 12:40:50
【问题描述】:
是否可以在包的说明文件中包含“条件导入”?
例如,我正在开发一个计划系统任务的包。在 Windows 上,这是通过任务计划程序和 taskscheduleR 包实现的,在 unix 上是通过 cronR 包实现的。所以直观地说,执行以下操作会很有用:
DESCRIPTION
Package: pkgname
Version: 0.0.1
[more fields]
Imports:
dplyr,
if (.Platform$OS.type == "windows") "taskscheduleR" else "cronR",
tidyr
我想可以写一个.onAttach() 或类似的东西来检查系统类型并安装相关的包(如果还没有的话),但这似乎不是一个特别好的解决方案——首先,它 依赖于用户在连接到网络时附加包,然后才能使用它,其次它打破了正式的依赖链。
我目前的方法是将这两个包都包含在Suggests 中,然后由用户负责为他们的系统安装正确的包。
【问题讨论】:
-
您可以创建一个新的包“myschedulewrapper”,根据操作系统,它可以移植到
cronR或taskscheduleR。没有任何任务不能用另一层间接解决......