R 2.14 - 检测没有命名空间的包

SFu*_*n28 19 r cran

据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)


Mat*_*wle 5

赶紧跑 :

update.packages(checkBuilt=TRUE)
Run Code Online (Sandbox Code Playgroud)