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

标签 r cran

根据 v2.14 的 R 新闻:

All packages must have a namespace, and one is created on installation if not supplied in the sources. This means that any package without a namespace must be re-installed under this version of R (but data-only packages without R code can still be used).



如何以编程方式检测 2.13.x 下安装的哪些软件包没有命名空间,以便我知道需要更新什么?

最佳答案

函数packageHasNamespace掌握着 key 。与 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)
  )
}

这段代码的结果是一个命名的逻辑向量 pkgNS如果包有命名空间,则为 TRUE,否则为 FALSE。

要仅获取那些没有命名空间的包,请创建 pkgNS 的子集在哪里 pkgNS是假的:
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 

关于R 2.14 - 检测没有命名空间的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7998438/

相关文章:

r - 在 R 中将 tbl_summary 导出为 png 的替代方法

r - 从 R 包中导出环境

r - 如何为 enquos 类型的 quosures 测试 null 或缺失

r - 计算繁重的R小插曲

r - CRAN 包提交

r - 合并后保持同名列相邻

r - 尝试加入 dplyr 时出现损坏警告

r - 如何将 R CMD 检查的输出发送到文件或变量?

r - 错误 ".onLoad failed in loadNamespace() for ' tcltk'"