如果您是一个软件包作者,当我们在大约一周内转移到2.14时,您希望很清楚包结构即将发生的变化.其中一个变化是所有包都需要一个NAMESPACE,如果您没有生成一个包,将为您生成一个(R等同于您在美国的Miranda权利).因此,作为一个好公民,我试图解决这个问题.以下是R-exts的部分:
1.6.5摘要 - 转换现有包
总而言之,将现有包转换为使用命名空间涉及几个简单的步骤:
确定公共定义并将它们放在导出指令中.识别S3样式的方法定义并编写相应的S3method声明.识别依赖项并通过import指令替换任何require调用(并在DESCRIPTION文件的Depends和Imports字段中进行适当的更改).用.onLoad函数或useDynLib指令替换.First.lib函数.
为了确保我在这里做正确的事情,有人可以给出一个简短明确的定义/答案(我是否通过将几个小但相关的问题放在一起来打破规则?).所有答案都应考虑到2.14,请:
谢谢!
我有一个包在DESCRIPTION文件中包含以下包Imports:
Imports: lubridate,
    assertthat,
    R6,
    stringr
我不使用import(pkgname)或importFrom(pkgname, fn)命令将这些导入到我的包的NAMESPACE中.相反,我使用完全限定的调用在我的R代码中引用这些包的函数.根据我对R-ext的解读,这是允许的:
"Imports"字段列出了从其导入名称空间的包(在NAMESPACE文件中指定),但不需要附加.必须在此处列出由'::'和':::'运算符访问的命名空间...
但是,运行时出现以下错误devtools::check():
* checking dependencies in R code ... NOTE
Namespaces in Imports field not imported from:
  'R6' 'stringr'
  All declared Imports should be used.
See the information on DESCRIPTION files in the chapter 'Creating R
packages' of the 'Writing R Extensions' manual.
注意:为了确认,我的R代码包含对R6和stringr中函数的完全限定调用(例如stringr::str_detect(...)和R6::R6Class(...)).
我为什么要收到这些笔记?我怎么让它们消失?