编写R-package我使用名称空间来使用现有包中的函数,例如raster::writeRaster(...)
。
但是,我想知道base
包中的功能是否也像这样使用,例如base::sum(...)
。这可能最终导致非常混乱的代码部分:
foo[base::which(base::sapply(bar, function())]
答案 0 :(得分:3)
不,你不需要像这样引用基础包。您只需要引用非基础包,以确保在运行包中的函数时将它们加载到函数环境中,方法是在脚本顶部的Roxegen注释中使用::
或@import
。了解为什么您不需要参考以下基础包:
http://adv-r.had.co.nz/Environments.html
"包命名空间保持包独立。例如,如果包A使用base mean()函数,如果包B创建自己的mean()函数会发生什么?命名空间确保包A继续使用base mean()函数,包A不受包B的影响(除非明确要求)。"(Hadley Wickham)
你需要引用base ::的唯一一次是你的包的名称空间是否包含一个具有相同名称的替代函数的包。