每个软件包安装说明都以:
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
我想知道
requireNamespace()
功能是什么意思?
文档中给出的定义对我来说没有多大意义。
requireNamespace()
与 loadNamespace
有什么不同?
loadNamespace 的包装器,类似于返回逻辑值的 require”
在安装每个新软件包之前是否始终需要以下两行?
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
requireNamespace()
是 loadNamespace()
的包装,返回逻辑值。 loadNamespace()
加载指定的名称空间并将其注册到内部数据库中。 (请参阅通过运行 ?requireNamespace
访问的功能文档。)
它不会将名称空间附加到搜索路径。所以,假设我安装了软件包
"vegan"
并且我运行:
requireNamespace("vegan")
as.mlm()
它将返回:
Error in as.mlm() : could not find function "as.mlm"
如果我跑步
require("vegan")
as.mlm()
我将(从当前的纯素版本开始)收到一条消息,表明我想要使用的功能已被弃用。
因此,您可以使用
requireNamespace()
来验证某些包是否存在,同时防止潜在的命名空间冲突。