web-dev-qa-db-ja.com

Rprofile.siteの.libPathsを使用してRのデフォルトのライブラリパスを変更すると機能しない

私は管理者としてではなく、Windows上でRを実行しています。パッケージをインストールするときに、次のコマンドが機能しません。

> install.packages("Zoo")
Installing package(s) into ‘C:/Program Files/R/R-2.15.2/library’
(as ‘lib’ is unspecified)
Warning in install.packages :
  'lib = "C:/Program Files/R/R-2.15.2/library"' is not writable

パッケージをインストールするには、ライブラリの場所を指定する必要があります。

install.packages("Zoo", lib="C:/software/Rpackages")

パッケージをロードするには、ライブラリの場所も指定する必要があります。

library("Zoo", lib.loc="C:/software/Rpackages")

これはすべて問題ありませんが、C:/software/Rpackagesをなんらかの方法でライブラリパスに追加できるので、毎回入力する必要がないかどうかを確認したいと思いました。

オンラインで検索したところ、これを行う1つの方法はRprofile.siteファイルを編集して次の行を追加することです。

.libPaths("C:/software/Rpackages")

しかし、これを行ってRStudioを起動した後、これが私が得る出力です。

> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library" 

私が.libPathsに追加したRprofile.siteコマンドは、効果がないようです。これはなぜでしょうか。あるいはもっと重要なのは、ライブラリの場所を入力せずにパッケージをインストールおよびロードできるようにするにはどうすればよいでしょうか。

注意:RStudioを起動すると、.libPaths()コマンドは正常に動作するように見えます。

.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"

変じゃないですか。

170
I Like to Code

私は通常、私のすべてのパッケージを1つのライブラリに保存しようとしますが、ライブラリを追加したい場合は、既存のライブラリに新しいライブラリを追加しないのが良いでしょう。

.libPaths( c( .libPaths(), "~/userLibrary") )

それから私は得ます:

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/davidwinsemius/userLibrary"  

.libPaths関数は、他のほとんどの非グラフィック関数とは少し異なります。副作用で働きます。 R環境変数を報告および変更する関数Sys.getenvおよびSys.setenvは分割されていますが、.libPathsはそのターゲットを報告または変更することができます。 Rの起動プロセスに関する情報は?Startupヘルプページで読むことができ、RStudioの資料は次の場所にあります。 https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio

あなたの場合、RStudioはRprofile.siteの設定を尊重していないか、あるいはRStudioのデフォルトの1つから.Rprofile設定を読んでそれらを上書きしているようです。また、この操作の結果は.Library.Library.siteへの呼び出しの内容も追加することにも注意してください。これが、RStudio-(または他のIDEまたはネットワークインストール済み)のRがホストになる理由異なる動作.

136
42-

適切な解決策は、RStudioにRprofile.siteファイルを認識させるのではなく、環境変数R_LIBS_USERを目的のライブラリフォルダへのファイルパスの値に設定することです。

Windowsで環境変数R_LIBS_USERを設定するには、[コントロールパネル]([システムのプロパティ] - > [高度なシステムプロパティ] - > [環境変数] - > [ユーザー変数])に移動します。

Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages  

R_LIBS_USERを設定すると、RStudioを直接起動するかファイルを右クリックしてRStudioを起動する "Open With"を選択しても、ライブラリは.libPaths()で最初に表示されます。

Rprofileソリューションは、RStudioのショートカットをクリックしてRStudioを常に起動していれば機能します。この場合、 デフォルトの作業ディレクトリをRprofile を格納するディレクトリに設定すれば十分です。ファイルをクリックしてRStudioを起動すると、Rprofileソリューションは機能しません。これは、作業ディレクトリがデフォルトの作業ディレクトリから変更されるためです。

180
Paweł Rumian

私は、デフォルトの作業ディレクトリの.Rprofileファイルにコードを入れることで、問題を解決することができました。

まず、デフォルトの作業ディレクトリの場所を見つけました。

> getwd()
[1] "C:/Users/me/Documents"

それから私はテキストエディタを使って次の行を含む単純な.Rprofileファイルを書きました

.libPaths("C:/software/Rpackages")

最後に、Rを起動して.libPaths()を実行すると、目的の出力が得られます。

> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
19
I Like to Code
12
bowen.li

管理者権限がない場合は、 \R-3.1.0\etc にあるRprofile.site-ファイルを開いて次の行を追加してください。

.First <- function(){
  .libPaths("your path here")
}

これは開始時に直接.libPath()コマンドを評価します

8
schlusie

私は私が思うに解決策であると思った ここ (SFUのCarl Schwarzありがとう)恒久的な(あなたがそれを各セッションを定義する必要はない)個人的なライブラリを追加する私のMacマシンではデフォルトとして扱います。私はそれがSOに明示的にレイアウトされているのを見たことがなかったので、私は彼らが提供したステップをまとめました。

Windows 7 OSの場合:

  1. パーソナルライブラリを置きたいドライブにディレクトリを作成します。 C:\ User\Rlibs(またはあなたがアクセス権を持っている他の人)

  2. コントロールパネルの設定を編集するには、Windowsの検索バーで「アカウントの環境変数を編集する」を検索するか、このページに移動します。

  3. [環境変数]ウィンドウの中央にある[新規]をクリックします。

  4. [新しいユーザー変数]ウィンドウで、[変数名]に R_LIBS を入力し、作成したパーソナルライブラリディレクトリへのパスを入力します。 C:\ User\Rlibs

  5. 「OK」をクリックすると、「ユーザー変数」ウィンドウに変数と値のペアが表示されます。

  6. もう一度[OK]をクリックします

これで、R(またはRstudio)を起動してコマンド.libPaths()を入力すると、作成したパーソナルライブラリとRシステムライブラリが表示されます。

Mac用:

  1. あなたの "Home"または "username"ディレクトリに Rlibs という名前のフォルダを作ります。

  2. ターミナルアプリケーションを起動します

  3. 次のように入力します。echo "R_LIBS=~/Rlibs"> .Renvrion大文字と小文字が一致することを確認してください。

  4. ディレクトリ内のファイルの完全なリストを表示するには、ls -aと入力します。これには、 .Renvrion が含まれているはずです。

  5. .Renviron ファイルが正しく設定されていることを確認します。more .Renviron

R/Rstudioを起動して「.libPaths()」と入力すると、パーソナルライブラリへの新しいパスが表示されます。

7
Whalen

私はこれを理解するのに本当に苦労しました。私が最後にOSとRstudioを再インストールしたとき、gorkyplは上記の正しい解決策を提供しましたが、今度は環境変数の設定が解決しませんでした。

RとRstudioの両方をアンインストールし、ディレクトリC:\ RとC:\ Rstudioを作成してから、両方を再インストールしました。

(gorkyplの答えに従って)R_LIBS_USERユーザ変数をあなたの好きなディレクトリに定義し、ユーザ変数をロードするためにあなたのマシンを再起動してください。 Rstudioを開くと、エラーがなくなります。

Sys.setenv()を使用してR_LIBS_USERを代替ライブラリのパスに変更することもできます。これはより簡単で、コンピュータを再起動する必要はありません。

R_LIBS_USERが何に設定されているかを確認するには:?Sys.getenv()

help(Startup)を読むと便利です。

4
felixmc

新しいバージョンのRをインストールした後などの方法でデフォルトのパッケージライブラリを変更した場合は、以下のコマンドを使用して両方のライブラリを追加してすべてのパッケージを使用できます。既存のライブラリパスを取得します。

.libPaths()

今、既存のパスと古いパスを設定します。

.libPaths(c(.libPaths(), "~/yourOldPath"))

それが役に立てば幸い。

2
Shivong Birla

私はReadmeを読みました。彼らが言及したということで、どのパスがそこにあるかチェックするためにコマンドラインで.libPaths()を使用します。私は以前に2つのライブラリパスを持っていました。必要な場所でコマンド.libpath( "C:/ Program Files/R/R-3.2.4revised/library")を使用すると、ライブラリパスが変更されました。コマンドラインで再度.libPaths()を入力したとき、正しいパスが表示されました。お役に立てれば

1

管理者権限のないディレクトリにあるRライブラリのデフォルトフォルダを変更するだけです。

.libPaths("C:/R/libs")
getwd()
# [1] "C:/Users/..../software/My R studio"

上記のリンクを二重反転カンマでコピーします。

.libPaths(new="C:/Users/..../software/My R studio")

あなたのデフォルトパスはパッケージをインストールするために変わるでしょう

ライブラリパスを永続的に変更する場合(Rに入るたびに.libPath()を呼び出すことなく)、これは私のために機能します:

  1. ホームディレクトリの下に.Rprofileを作成します。 (〜/ .Rprofile)

  2. .Rprofileファイルに.libPaths(c( .libPaths(), "your new path" ))と入力して保存します。

  3. r(任意のディレクトリ)を開いて確認し、.libPaths()と入力するだけで、libarayパスが更新されていることがわかります。

0
Pengyao