我正试图在检查包时追逐功能名称之间的冲突.我最终可能会直接询问这个问题,但首先,我想知道三件事情,R-exts中似乎都没有提及:
And*_*rie 16
你问了三个问题.
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)
您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
Run Code Online (Sandbox Code Playgroud)