需要基础包的名称 space?

Name space of base package needed?

编写 R 包我使用名称空间来使用现有包中的函数,例如raster::writeRaster(...)

但是,我想知道 base 包中的函数是否也被这样使用,例如base::sum(...)。这可能会导致非常混乱的代码部分:

foo[base::which(base::sapply(bar, function())]

不,您不需要像这样引用基础包。您只需要引用非基础包,以确保当您的包中的函数是 运行 时,它们被加载到函数环境中,方法是在 Roxegen 注释中使用 ::@import脚本的顶部。看看为什么你不需要参考下面的基础包:

http://adv-r.had.co.nz/Environments.html

"Package namespaces keep packages independent. For example, if package A uses the base mean() function, what happens if package B creates its own mean() function? Namespaces ensure that package A continues to use the base mean() function, and that package A is not affected by package B (unless explicitly asked for)."(哈德莉·威克姆)

您唯一需要引用 base:: 的情况是您的包的命名空间包含具有同名替代函数的包。