web-dev-qa-db-ja.com

Rにパッケージを自動的にロードする方法は?

Rにパッケージを自動的にロードする方法を提案してもらえますか?つまり、library('package name')を数回使用する必要なく、Rでセッションを開始したいのです。次にRを起動するときに使用するすべてのパッケージをダウンロードしたとします。

53
nhern121

library(foo)を_.Rprofile_ファイルに入れるか、_R_DEFAULT_PACKAGES_を設定します:_?Rprofile_を参照してください...

特に(_?Rprofile_は長く、潜在的に威timするため):

開始時にデフォルトのパッケージとは異なるパッケージセットが必要な場合は、「。Rprofile」または「Rprofile.site」ファイルに「options」への呼び出しを挿入します。たとえば、「options(defaultPackages = character())」は、起動時に追加のパッケージを添付しません(「base」パッケージのみ)(または、Rを実行する前に「R_DEFAULT_PACKAGES = NULL」を環境変数として設定します)。 「options(defaultPackages = "")」または「R_DEFAULT_PACKAGES = ""」を使用すると、Rsystemデフォルトが強制されます。

あなたはおそらくdoすべてのデフォルトパッケージをロードし、追加のパッケージを追加する(たとえば、デフォルトパッケージの一部をロードしないなど)ので、

_library("mypackage1")
library("mypackage2")
[etc.]
_

またはoptions(defaultPackages=...)を使用:

_options(defaultPackages=c(getOption("defaultPackages"),
       "mypackage1","mypackage2", ... [etc.]))
_

_.Rprofile_で、目的のパッケージを標準のデフォルトにappendします。

edit(コメントからコピー)これを Rstudio で動作するように再取得: http://rstudio.org/docs/using/workspaces は、Rstudioが_.Rprofile_を実行してから、「Rスタートアップ[ http://stat.ethz.ch/R-manual/R- patched/library/base/html/Startup.html ] "(_?Rprofile_と同じです)。 _Rprofile.site_を見るかどうかはあいまいです。

#2を編集:以下のコメントによると、Rstudioの最新バージョンで動作します。

72
Ben Bolker

Rの新しいセッションを開始するたびに実行されるスクリプトに過ぎない.Rprofileというファイルがあります。

必要なことは、library(package)を追加することです。 Unixを使用している場合は、おそらく隠しファイルとしてホームフォルダーにあります。

15
João Daniel

Rスタートアップのカスタマイズに関するQuick-Rページ には、BenとJoaoの回答と基本的に同じ情報が含まれていますが、おそらく少し明確です。ホームフォルダー(Windows上のドキュメント)に必要な変更を加えたRprofile.siteファイルのコピーを作成し、.Rprofileと呼びます

EDIT:R 3.0.0はDocumentsフォルダーからは見えなくなりましたが、Windows 7ではユーザーのホームディレクトリ(ユーザー名)を使用していることに気付きました。ただし、インストールの問題である可能性があります(つまり、以前にRを「間違って」インストールしたことがある)。ただし、この回答にリンクされているQuick-Rページは、これを行う正しい方法を示しています。他の誰かがこの問題に遭遇している場合、解決策は.Rprofileをユーザーのホームディレクトリにコピーすることです。

9
Mikko

簡単な答えは、みんなが提案したように、Rパッケージを_.Rprofile_ファイルに入れるべきだということです。

ただし、Rはこのファイルを読み取り、Rベースパッケージをロードすることに注意してください?Startup から参照してください。

サイトとユーザープロフィールファイルがソースになっている場合、基本パッケージのみが読み込まれることに注意してください。

これは、ロードしたいパッケージがいくつかのRベース関数を強化/上書きする場合に問題を引き起こす可能性があります。たとえば、tidyverse :: filterを参照してください。 https://github.com/tidyverse/dplyr/issues/1611

これまでに2つの解決策があります。

  1. _.Rprofile_ファイルの最初の行で.First.sys()を使用します。これは通常、.Rprofileの読み取り後に実行されるコマンドで、getOption("defaultPackages")にパッケージをロードします。

  2. オプションを更新defaultPackages:.Rprofileでlibrary()を使用しないでください。

    _old <- getOption("defaultPackages")
    options(defaultPackages = c(old, "tidyverse"))
    _
1
Matifou