ugh*_*ugh 30 import namespaces r roxygen
好吧,第一次尝试写一个R包,我被卡住了.这是我创建包的方式:
package.skeleton("pkg",code_files=some.filenames)
roxygenize("okg")
Run Code Online (Sandbox Code Playgroud)
我正在使用roxygen2并在我的"pkg-package.R"文件中输入以下内容:
@import data.table zoo lubridate
Run Code Online (Sandbox Code Playgroud)
从终端,我然后运行:
R CMD build pkg
R CMD check pkg
R CMD install pkg
Run Code Online (Sandbox Code Playgroud)
在检查阶段,我收到以下警告:
**为延迟加载准备包
警告:在加载'lubridate'时替换先前导入'hour'
警告:在加载'lubridate'时
替换先前导入'mday'
警告:在加载'lubridate'时替换先前的导入'月' 警告:替换之前的加载'lubridate'时导入'wday'
警告:加载'lubridate'时替换上一个导入'周'
警告:加载'lubridate'时替换上一个导入'yday'
警告:加载'lubridate'时替换上一个导入'year'
**帮助
*安装帮助索引
**构建软件包索引...
**测试是否可以加载已安装的软件包
警告消息:
1:在加载'lubridate'时替换先前导入'小时'
2:在加载'lubridate时替换先前导入'mday' '
3:在加载'lubridate'时替换先前导入'月'
4:在加载'lubridate'时替换先前导入'wday'5:在加载'lubridate'时
替换先前的导入'周'
6:在加载时替换先前导入'yday' "lubrid 吃''
7 ' :加载'lubridate'时替换上一个导入'年'
我真的不确定如何制作这些,但它们似乎是覆盖命名空间中的东西的典型警告.在任何情况下,我都可以安装软件包,但是当我尝试使用它时会发生什么:
library(pkg)
覆盖POSIXt,Date和difftime的+和 - 方法
警告消息:
1:在加载'lubridate'时
替换先前导入'hour'2:在加载'lubridate'时替换先前导入'mday'3
:替换先前导入' '加载'lubridate'时的'月':加载'lubridate'时
替换先前导入'wday'5:加载'lubridate'时
替换上一个导入'周'
6:加载'lubridate'时替换上一个导入'yday'7
:替换之前的加载'lubridate'时导入'年'
d < - my.function(arg1,arg2)
MATCH中的错误(x,x):找不到函数"MATCH"
使用traceback(),我发现这是在调用merge.zoo()期间生成的.所以我尝试在我的R会话期间手动加载动物园,然后功能正常,没有错误消息.
我已经尝试在"pkg-package.R"文件和NAMESPACE中手动更改导入的顺序.根据我在其他地方找到的东西,我没有添加任何Imports或Depends来描述.救命?
Mar*_*gan 30
警告是因为data.table和lubridate都定义了符号hour等; 看到data.table::hour和lubridate::hour.你可以通过只导入你想要的lubridate/data.table中的函数来避免这种情况,而不是整个包; 标准的NAMESPACE文件将包含
importFrom(lubridate, hour)
Run Code Online (Sandbox Code Playgroud)
例如.在roxygen2中你会使用标签:
@importFrom lubridate hour
Run Code Online (Sandbox Code Playgroud)
MATCH问题可能是因为merge调度错误,可能是因为zoo应该在其名称空间中S3method(merge, zoo)而不是export(merge.zoo)如编写R Extensions 1.6.2中所述.这里的解决方案是联系维护者zoo,packageDescription('zoo')$Maintainer(维护者对R非常熟悉,我觉得我错误地诊断了......).
| 归档时间: |
|
| 查看次数: |
5969 次 |
| 最近记录: |