7

この質問への回答に基づいて:不足しているパッケージをチェックしてインストールするためのエレガントな方法は?

次のコードを使用して、Rをアップグレードするとき、または他のユーザーをセットアップするときに、すべてのパッケージがインストールされていることを確認しています。

list.of.packages <- c("RODBC", "reshape2", "plyr")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if(length(new.packages)) install.packages(new.packages)

.Rprofileの.First関数に配置しましたが、Rを起動すると、次のエラーが発生し、起動を続行します。

Error in match(x, table, nomatch = 0L) : 
  could not find function "installed.packages"

プロンプトが表示された後にコードを実行すると、正常に機能します。なぜ何かアイデアはありますか?

ありがとう!

4

1 に答える 1

11

それを読む?Startupと、次のように見えます。

次に、関数.Firstが検索パスで見つかった場合、それは.First()として実行されます。最後に、基本パッケージの関数.First.sys()が実行されます。この呼び出しでは、options( "defaultPackages")で指定されたデフォルトパッケージを添付する必要があります。

現在、installed.packagesutilsパッケージに含まれています。これは通常、デフォルトパッケージの1つです。.Firstそのため、と呼ばれる時点では利用できません。

おそらく、に置き換えinstalled.packagesてみてくださいutils::installed.packages

Joshが下に記しているように、私の目はこの問題に直接対処している部分をざっと見ました。

サイトとユーザープロファイルファイルがソースされる場合、基本パッケージのみがロードされるため、他のパッケージのオブジェクトは、utils :: dump.framesなどで参照するか、関連するパッケージを明示的にロードした後に参照する必要があることに注意してください。

于 2012-06-28T18:20:15.260 に答える