2012-03-28 44 views
15

我正在为我的一个软件包写一个小插曲。是否可以在包装小插图中使用非导入的包?

在这个小插曲,我想演示如何这个包可以是NAMESPACE或由DESCRIPTION文件的Imports部分进口otehr程序包进行交互。

所以,我把一个require呼叫我的小品中使用这些外部包,但当然,我得到了以下NOTE当我尝试R CMD check包:

* checking for unstated dependencies in vignettes ... NOTE 
‘library’ or ‘require’ call not declared from: ‘RColorBrewer’ 

有没有解决任何方式这个,或者我应该导入这些外部软件包还是使用eval=FALSE“伪造”小插曲?

回答

20

将它写入您的DESCRIPTION文件的Suggests:

来自p。 6 R extensions manual

的“:建议”字段使用相同的语法为“依赖”,并列出了不一定需要 包。这包括仅在示例,测试或晕影(参见第1.4节[编写包 vignettes],第26页)中使用 的包以及加载到函数体中的包。例如,假设来自包foo的示例使用包 栏中的数据集。那么除非有人想要 执行所有的示例/测试/小插曲,否则没有必要使用foo,这是有用的,但有必要有吧, 但不是必需的。可以指定版本要求,并且将由R CMD检查使用的 。

+0

感谢Ben,这个技巧 - 我只是不明白Suggests字段背后的能力。对不起,这是一个RTFM问题! – Pierre 2012-03-28 02:00:35

3

此外,如果小插曲正确取决于包装,应该在小品本身

% \VignetteDepends{...} 

声明:Sweave, Part II: Package Vignettes, R News 3/2 (Oct. 2003), 21 - 24.

但是,你的情况可能是有一点不同:

我使用if (require ("pkgxy"))而不是% \\VignetteDepends{pkgxy}Suggests: pkgxy在描述是需要的反正)有些事情我想要s但是我不想强迫用户安装所有建议的pacakges。我在小插曲的开头部分放了一个盒子,报告哪些软件包可用,并且如果在构建小插图时软件包不可用,则需要使用“pkgxy来执行此操作”文本放入小插曲中。

"introduction" vignette of package hyperSpec是一个例子(要了解它是如何实际工作的,你不仅需要the .Rnw而且还需要some more definitions)。

+0

谢谢澄清! hyperSpec“介绍”的链接已经关闭,也许最好从这里开始(http://hyperspec.r-forge.r-project.org/)。 – dardisco 2013-03-17 02:58:57

+0

@dardisco:谢谢 - 我修复了损坏的链接。 – cbeleites 2013-03-17 11:24:33

相关问题