19

v2.14のRニュースによると:

すべてのパッケージには名前空間が必要です。ソースで提供されていない場合は、インストール時に1つ作成されます。つまり、名前空間のないパッケージは、このバージョンのRで再インストールする必要があります(ただし、Rコードのないデータのみのパッケージは引き続き使用できます)。

2.13.xでインストールされたパッケージに名前空間がないことをプログラムで検出して、何を更新する必要があるかを知るにはどうすればよいですか?

4

3 に答える 3

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

このコードの結果はpkgNS、パッケージに名前空間がある場合はTRUE、名前空間がない場合はFALSEの名前付き論理ベクトルになります。

名前空間を持たないパッケージのみを取得するには、whereisFALSEのサブセットを作成し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 
于 2011-11-03T16:47:19.133 に答える
5

とにかく走れ :

update.packages(checkBuilt=TRUE)
于 2011-11-03T16:54:48.827 に答える
3

素晴らしいスレッド。私は同じ問題で立ち往生していました。実行する必要があるすべてを完了するには、次のことができます。

remove.packages(names(pkgNS[!pkgNS]))
install.packages(names(pkgNS[!pkgNS]))
于 2012-02-07T19:02:55.043 に答える