我试图在检查包时追逐功能名称之间的冲突。我最终可能会直接询问这个问题,但首先,我想知道三件事情,R-exts似乎都没有提及:
- DESCRIPTION:Imports和NAMESPACE导入()中列出的包应该是相同的,对吧?
- 在任何一个列表中,导入的顺序是否有问题?如果是的话,是否有关于如何订购的一般建议?
- 我使用R --vanilla CMD检查pkg_name以避免我的.Rprofile干扰。当我的.Rprofile处于活动状态并包含库(pkg_name)语句时,这些语句的顺序是否重要?
我试图在检查包时追逐功能名称之间的冲突。我最终可能会直接询问这个问题,但首先,我想知道三件事情,R-exts似乎都没有提及:
你问了三个问题。
DESCRIPTION
以及 NAMESPACE
每个包都列在 DESCRIPTION
Imports:
必须有匹配的条目 NAMESPACE
import(...)
。进入 DESCRIPTION
可能包含版本信息,但在 NAMESPACE
你只能命名包。
注意小心翼翼:法术 Imports
有资本 I
和尾随 s
在描述中
例如:
描述
Imports:
stringr (>= 0.5)
NAMESPACE
import(stringr)
你的包裹 load
要么 import
稍后屏蔽先前加载或导入的包。这仅在导入导出具有相同名称的函数的包时才有意义。
例如,两者 lattice
和 ggplot2
出口 layer
功能。因此,如果你第一次导入 lattice
接着 ggplot2
, 代表着 ggplot2::layer
将面具 lattice::layer
。
换句话说,使用 layer
会参考 ggplot2::layer
。如果你想参考 lattice
你需要明确引用的版本 lattice::layer
在你的功能。
出于同样的原因,加载包的顺序(在脚本或.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
你问了三个问题。
DESCRIPTION
以及 NAMESPACE
每个包都列在 DESCRIPTION
Imports:
必须有匹配的条目 NAMESPACE
import(...)
。进入 DESCRIPTION
可能包含版本信息,但在 NAMESPACE
你只能命名包。
注意小心翼翼:法术 Imports
有资本 I
和尾随 s
在描述中
例如:
描述
Imports:
stringr (>= 0.5)
NAMESPACE
import(stringr)
你的包裹 load
要么 import
稍后屏蔽先前加载或导入的包。这仅在导入导出具有相同名称的函数的包时才有意义。
例如,两者 lattice
和 ggplot2
出口 layer
功能。因此,如果你第一次导入 lattice
接着 ggplot2
, 代表着 ggplot2::layer
将面具 lattice::layer
。
换句话说,使用 layer
会参考 ggplot2::layer
。如果你想参考 lattice
你需要明确引用的版本 lattice::layer
在你的功能。
出于同样的原因,加载包的顺序(在脚本或.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