v2.14のRニュースによると:
すべてのパッケージには名前空間が必要です。ソースで提供されていない場合は、インストール時に1つ作成されます。つまり、名前空間のないパッケージは、このバージョンのRで再インストールする必要があります(ただし、Rコードのないデータのみのパッケージは引き続き使用できます)。
2.13.xでインストールされたパッケージに名前空間がないことをプログラムで検出して、何を更新する必要があるかを知るにはどうすればよいですか?
関数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
とにかく走れ :
update.packages(checkBuilt=TRUE)
素晴らしいスレッド。私は同じ問題で立ち往生していました。実行する必要があるすべてを完了するには、次のことができます。
remove.packages(names(pkgNS[!pkgNS]))
install.packages(names(pkgNS[!pkgNS]))