据R News for v2.14:
所有包都必须具有命名空间,如果源中未提供,则会在安装时创建一个.这意味着必须在此版本的R下重新安装任何没有命名空间的包(但仍然可以使用不带R代码的仅数据包).
我如何以编程方式检测2.13.x下安装的哪些软件包没有命名空间,以便知道需要更新哪些软件包?
And*_*rie 22
该功能packageHasNamespace保持密钥.与它一起使用installed.packages:
以下代码循环遍历以下所有库位置.libPaths:
pkgNS <- NULL
for(i in seq_along(.libPaths())){
libLoc <- .libPaths()[i]
pkgs <- installed.packages(lib.loc=libLoc)[, 1]
pkgNS <- c(pkgNS,
sapply(unname(pkgs), packageHasNamespace, package.lib=libLoc)
)
}
Run Code Online (Sandbox Code Playgroud)
此代码的结果是一个命名逻辑向量pkgNS,如果包具有命名空间,则为TRUE,否则为FALSE.
要仅获取那些没有命名空间的包,请创建pkgNSwhere 的子集pkgNS为FALSE:
pkgNS[!pkgNS]
abind bitops CircStats combinat corpcor deldir
FALSE FALSE FALSE FALSE FALSE FALSE
Design evd financial fpc getopt gsubfn
FALSE FALSE FALSE FALSE FALSE FALSE
ineq magic mlbench optparse plotrix ppcor
FALSE FALSE FALSE FALSE FALSE FALSE
Run Code Online (Sandbox Code Playgroud)