描述顺序导入:和R 2.14.0包检查中的NAMESPACE import()

时间:2011-11-06 14:39:29

标签: r package

我正在尝试在检查包时追逐功能名称之间的冲突。我最终可能会直接询问这个问题,但首先,我想知道三件事情,R-exts中似乎都没有提及:

  1. DESCRIPTION:Imports和NAMESPACE导入()中列出的包应该是相同的,对吗?
  2. 在任一列表中,导入的顺序是否正确?如果是的话,是否有关于如何订购的一般建议?
  3. 我使用R --vanilla CMD检查pkg_name以避免我的.Rprofile干扰。当我的.Rprofile处于活动状态并包含库(pkg_name)语句时,那些顺序是否重要?

1 个答案:

答案 0 :(得分:15)

你问了三个问题。

1。列出DESCRIPTION以及NAMESPACE

中的包

DESCRIPTION Imports:中列出的每个包都必须包含匹配的条目NAMESPACE import(...)DESCRIPTION中的条目可能包含版本信息,但在NAMESPACE中您只能命名该软件包。

请注意警惕:使用大写Imports拼写I并在说明

中尾随s

例如:

<强>描述

Imports:
    stringr (>= 0.5)

<强> NAMESPACE

import(stringr)

2。订单很重要

loadimport的软件包稍后会屏蔽先前加载或导入的软件包。这仅在导入导出具有相同名称的函数的包时才有意义。

例如,latticeggplot2都会导出layer函数。因此,如果您先导入lattice然后导入ggplot2,则表示ggplot2::layer将屏蔽lattice::layer

换句话说,使用layer会引用ggplot2::layer。如果您想参考lattice版本,则需要在功能中明确引用lattice::layer

3。加载包的顺序也很重要

出于同样的原因,加载包的顺序(在脚本或.Rprofile中)很重要。您加载的任何新包都将在先前加载的包中屏蔽具有相同名称的函数。

当发生这种情况时,R会做出明智的事情并在控制台消息中告诉你。

以下是加载reshape包时出现的屏蔽示例,该包取决于plyr,但也会屏蔽plyr中的某些函数:

library(reshape)
Loading required package: plyr

Attaching package: 'plyr'

The following object(s) are masked from 'package:braidppt':

    .


Attaching package: 'reshape'

The following object(s) are masked from 'package:plyr':

    rename, round_any