16

次の R コマンドは、すべての CRAN パッケージをインストールします。

availablePackages <- available.packages()[,1]
install.packages(availablePackages)

次のコマンドは、インストールされているすべてのパッケージを一覧表示します。

installedPackages <- .packages(all.available = TRUE)

私の質問は、R に、まだインストールされていないすべての CRAN パッケージをインストールするように指示するにはどうすればよいですか?

4

6 に答える 6

19

率直に言って、骨の折れる仕事だと思います...数日、場合によっては数週間(リソースにもよりますが)続きますが、コードは次のとおりです(私は些細なことをするのが好きです):

# get names of installed packages
packs <- installed.packages()
exc <- names(packs[,'Package'])

# get available package names
av <- names(available.packages()[,1])

# create loooong string
ins <- av[!av %in% exc]
install.packages(ins)

なぜあなたがこれをやっているのかはまだわかりませんが、ちょっと...いくつかのことは意図されていないだけです....私が最も驚いているのは、あなたがすでにあなた自身の質問に答えているという事実です! あなたは必要なものを手に入れました、そして物事をまとめるのはあなた次第です... 私たちは要点を逃していますか? 何か他に思い当たることはありませんでしたか?!?

于 2010-01-31T01:11:50.897 に答える
13

1) なぜそれをしたいのですか? その数は3500 を超えています (2012 年 2 月現在)。

2) CRAN タスク ビューと、特定のタスクからパッケージをインストールできるようにするctvパッケージを見ましたか?

3) 太字の質問は、手動で実行できる単純なインデックス クエリです (さらに、 も参照してくださいhelp(sets)) 。

R> available <- LETTERS                  # a simple set
R> installed <- LETTERS[c(1:10, 15:26)]  # a simple subset
R> available[ ! available %in% installed ]
[1] "K" "L" "M" "N"
R> 

編集:あなたのフォローアップに応じて:

a) パッケージが Linux および Windows で「R CMD チェック」に合格しない場合、CRAN にアップロードされません。それでその仕事は終わりです。

b) 後でわかるように、最後にすべての依存関係を取得することも作業です。私たちは、http://debian.cran.r-project.org にある cran2deb のためにそれを行いました(これは、単なるインストール以上の本格的な Debian パッケージの構築を行います)。ビルドされた 2150 個のパッケージのうち約 2050 個が得られます。ライセンスのためにビルドを拒否するもの、ヘッダーやライブラリがないためにビルドできないもの、BioConductor パッケージなどを必要とするためにビルドできないものがあります。

于 2010-01-30T19:40:22.273 に答える
2

次のコマンドを入力すると、すべてのパッケージが自動的にインストールされます。

install.packages(available.packages()[,1])
于 2014-03-16T01:32:56.673 に答える
0

私はこれをテストしましたが、動作します

availablePackages=available.packages()
availablePackages<-as.vector(availablePackages[,1])
installedPackages=.packages(all.available = TRUE)
missedPackages<-setdiff(availablePackages, installedPackages)
for (i in 1:length(missedPackages))
{
pkgName <- missedPackages[i]
install.packages(pkgName)
}
print("END")

よろしく

于 2017-04-02T16:51:57.990 に答える
0

私の経験からすると、すべての R パッケージを一度にインストールするのは賢明ではありません。これらすべてのパッケージを (ライブラリ関数を使用して) 呼び出さなくても、ホーム ディレクトリに置かれているだけで、R スタジオの速度が低下する可能性があります。少なくとも私の場合はそうでした。

于 2019-10-07T16:57:20.760 に答える