我正在尝试在检查包时追逐功能名称之间的冲突。我最终可能会直接询问这个问题,但首先,我想知道三件事情,R-exts中似乎都没有提及:
答案 0 :(得分:15)
你问了三个问题。
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