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

Bry*_*son 11 r package

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

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

And*_*rie 16

你问了三个问题.

1.列出包DESCRIPTION以及NAMESPACE

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

粗心的注意事项:Imports使用描述中的大写拼写I和尾随拼写s

例如:

描述

Imports:
    stringr (>= 0.5)
Run Code Online (Sandbox Code Playgroud)

NAMESPACE

import(stringr)
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果您有冲突,您应该使用`importsFrom`来从每个包中导入所选的函数 (3认同)