当写我自己的R包,我似乎无法得到其他软件包才能正确导入(When writing my own R

2019-06-23 23:30发布

好吧,在编写的R包,我第一次尝试我被困。 下面是我如何创建包:

package.skeleton("pkg",code_files=some.filenames)
roxygenize("okg")

我使用roxygen2并在我的“PKG-package.R”文件中的以下导入:

@import data.table zoo lubridate

从终端,我然后运行:

R CMD build pkg
R CMD check pkg
R CMD install pkg

在检查阶段,我得到以下警告:

**制备包迟缓装载
警告:加载“lubridate”时,替代了以前的进口“小时”
警告:加载“lubridate”时,替代了以前的进口“MDAY”
警告:加载“lubridate”时,替代了以前的进口“月”
警告:加载“lubridate”时,替代了以前的进口“wday”
警告:加载“lubridate”时更换“一周以前进口
警告:加载“lubridate”时,替代了以前的进口“yday”
警告:更换以前的导入“年”载入“lubridate”时
** 救命
*安装帮助索引
**建设一揽子计划指标...
**如果安装的软件包可以加载测试
警告信息:
1:加载“lubridate”时,替代了以前的进口“小时”
2:加载“lubridate”时,替代了以前的进口“MDAY”
3:加载“lubridate”时,替代了以前的进口“月”
4:加载“lubridate”时,替代了以前的进口“wday”
5:加载“lubridate”时,替代了以前的进口“周”
6:加载“lubridate”时,替代了以前的进口“yday”
7:更换以前的导入“年”加载“lubridate”时

我真的不知道做这些的话,但他们似乎是在命名空间覆盖的东西典型的警告。 在任何情况下,我能够安装包,但在这里,当我尝试使用它会发生什么:

库(PKG)
重写+和 - 为POSIXt,日期和difftime方法
警告信息:
1:加载“lubridate”时,替代了以前的进口“小时”
2:加载“lubridate”时,替代了以前的进口“MDAY”
3:加载“lubridate”时,替代了以前的进口“月”
4:加载“lubridate”时,替代了以前的进口“wday”
5:加载“lubridate”时,替代了以前的进口“周”
6:加载“lubridate”时,替代了以前的进口“yday”
7:更换以前的导入“年”加载“lubridate”时
d < - my.function(ARG1,ARG2)
错误MATCH(X,X):找不到函数 “MATCH”

使用回溯(),我发现,这是一个正在通话过程中产生到merge.zoo()。 所以,我想通过手工加载动物园我R对话期间,瞧,则该函数正常工作没有错误消息。

我试图改变进口的手工排序,无论是“PKG-package.R”的文件,以及在命名空间。 基于东西我在别处找到了,我还没有添加任何进口或依赖于说明,但是。 救命?

Answer 1:

该警告是因为data.table和lubridate都定义了一个符号hour ,等; 看到data.table::hourlubridate::hour 。 你可以通过导入刚刚从lubridate / data.table你想要的功能,而不是整个包来避免这样; 一个标准的空间文件将包含

importFrom(lubridate, hour)

例如。 在roxygen2你会使用标签:

@importFrom lubridate hour

本场比赛的问题,可能是因为merge是正确调度,可能是因为动物园应该有它的名字空间S3method(merge, zoo) ,而不是export(merge.zoo)如写作R附加软件,1.6.2描述。 这里的解决方案是联系的维护者zoopackageDescription('zoo')$Maintainer (维护者是R中充分熟悉,我觉得我已经误诊......)。



Answer 2:

至于比赛误差暂时的解决办法,我已经成功上市zoo的下包Depends:包的部分DESCRIPTION文件。



文章来源: When writing my own R package, I can't seem to get other packages to import correctly