需要基础包的名称 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:: 的情况是您的包的命名空间包含具有同名替代函数的包。
编写 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:: 的情况是您的包的命名空间包含具有同名替代函数的包。