Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 2.14-检测不带命名空间的包_R_Cran - Fatal编程技术网

R 2.14-检测不带命名空间的包

R 2.14-检测不带命名空间的包,r,cran,R,Cran,根据v2.14的R新闻: 所有包都必须有一个名称空间,并且在上创建一个名称空间 安装(如果源文件中未提供)。这意味着任何 必须在此目录下重新安装没有命名空间的包 R版本(但仍可以使用不带R代码的仅数据包) 使用) 如何通过编程检测2.13.x下安装的哪些软件包没有名称空间,以便知道需要更新哪些内容?函数packageHasNamespace持有密钥。与已安装的一起使用。软件包: 以下代码在.libpath中的所有库位置循环: pkgNS <- NULL for(i in seq_along

根据v2.14的R新闻:

所有包都必须有一个名称空间,并且在上创建一个名称空间 安装(如果源文件中未提供)。这意味着任何 必须在此目录下重新安装没有命名空间的包 R版本(但仍可以使用不带R代码的仅数据包) 使用)


如何通过编程检测2.13.x下安装的哪些软件包没有名称空间,以便知道需要更新哪些内容?

函数
packageHasNamespace
持有密钥。与已安装的
一起使用。软件包

以下代码在
.libpath
中的所有库位置循环:

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)
  )
}
只需运行:

update.packages(checkBuilt=TRUE)

好线。我被困在同一个问题上。要完成所有需要完成的工作,您可以:

remove.packages(names(pkgNS[!pkgNS]))
install.packages(names(pkgNS[!pkgNS]))

顺便说一句,我不能在我的环境中简单地调用更新包函数,因为我的xcopy可部署版本的R被签入到我的源服务器中,并且我当前使用SVN,这使得不可能使用R更新函数。所以,是的,我真的在寻找一种方法来检测没有名称空间的包。这个问题很好。谢谢你的提问。回答得很好,但这将列出所有未在R2.14中构建的包,而不仅仅是那些没有名称空间的包。我每天使用的大多数软件包都有名称空间已经有相当一段时间了。@Andrie说得好。不过,为了安全起见,刷新所有内容是无害的(R2.14有点不同)。我同意你的看法。只是OP说他不能在他的装置上这么做。好的,我现在看到OP的评论了。我对原始代码做了一个更正。它应该是沿着(.libpath())的序列中的
i
NP。如果不起作用,请告诉我。每次我运行此函数时,似乎都有其他东西停止工作。在我的最新化身中,我需要
取消列出
sapply
的结果。祝你好运
remove.packages(names(pkgNS[!pkgNS]))
install.packages(names(pkgNS[!pkgNS]))