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


206

管理者としてではなく、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"

変じゃないですか?


正確にinstall.packages("zoo")機能しない方法について少し詳しく説明できますか?エラーメッセージなど?
joran 2013年

1
@joran私は私がしようと、エラーメッセージを追加しましたinstall.packages("zoo")---それは理由については私の本当の問題ではない.libPaths()ではRprofile.site動作しません。
にコード化するのが好き

1
R Studioの代わりにRGuiを使用しても同じ問題がありますか?
Dason

6
Rのライブラリパスが管理者権限を必要とするフォルダーにデフォルト設定されているのはなぜですか?確かに、ユーザーのホームディレクトリの方が賢明でしょう
地球理論

superuser.com/questions/749283/…編集〜/ .Renviron R_LIBS_USER = / some / path
bowen.li

回答:


171

私は通常、すべてのパッケージを1つのライブラリに保存しようとしていますが、ライブラリを追加する場合は、新しいライブラリ(ファイルシステムに既に存在している必要があります)を既存のライブラリパスに追加してみませんか?

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

または(これにより、userLibraryが新しいパッケージを配置する最初の場所になります):

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

それから私は(少なくとも私がこれを最初に書いたときに戻ってきます):

> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/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が異なる動作をする可能性がある理由です。

Sys.getenv()はRプロセスの現在のシステム環境を返すので、ライブラリと他のパスを次のように表示できます。

Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]

パッケージの保存とアクセスに重要な2つは(Linuxボックスでは異なる)です。

R_LIBS_SITE                          /usr/local/lib/R/site-library:/usr/lib/R/site-library:/usr/lib/R/library
R_LIBS_USER                          /home/david/R/x86_64-pc-linux-gnu-library/3.5.1/

12
私は逆に必要なc()新しいライブラリは、カスタムフォルダに移動を確認するためにベクトルを
geotheory

優れた点。実際、.libPaths-functionはデフォルトで同じ効果があります。末尾のスラッシュの処理方法にもOS間の違いがあります。(Windowsでは問題ありません)。他のオプションがあります。参照?.libPaths
IRTFM、2015

5
新しいパスは実際にはファイルシステムに存在している必要があります。そうでない場合、ライブラリパスに追加されません
jarandaf

別の良い点。関数名はそうではないことを示していますが、最初に確認してfile.exists、パスが欠落していない場合にのみ続行できます。
IRTFM 2015年

3
私はこれを実行しましたが、うまくいきましたが、Rを起動するたびにパスを変更する必要があるようです。他のユーザーでも同じですか?
cyrusjan 2016年

215

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

R_LIBS_USERWindowsで環境変数を設定するには、コントロールパネル([システムのプロパティ]-> [システムの詳細設定]-> [環境変数]-> [ユーザー変数])に移動して、目的の値(ライブラリフォルダーへのパス)に移動します。

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

R_LIBS_USERを設定すると、RStudioを直接起動するか、ファイルを右クリックして[開く]でRStudioを起動するかに関係なく、ライブラリが.libPaths()に最初に表示されます。

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


2
適切な解決策に同意しました!
felixmc 14年

14
間違いなく適切なソリューションです。唯一の問題は、ユーザーが管理者でない場合(最初にこの問題が発生している場合など)、コントロールパネル->ユーザーアカウント->ユーザーアカウント->環境の変更で環境変数を変更する必要があります。変数。
David Moye

1
Linuxコマンドラインで同等のものを知っていますか(知っていますか)?
Diego-MX

5
確かに、これらをシェル変数として設定するだけです(bashでは編集.bash_profileおよび/または.bashrc)。ここを参照してください:unix.stackexchange.com/questions/117467/... 現在のセッションのためにこれらを設定するためには、コンソールだけで入力するexport R_LIBS_USER='directory_of_your_choice'
パヴェルRumian

2
コントロールパネルから変数を設定する代わりに、RprofileファイルのR_LIB_USERのデフォルト値を変更しました。ここに解決策:私は、同様のアプローチを思い付いた、溶液がこの質問に対する解決策としてで提示されるstackoverflow.com/questions/31707941/...
マルコ

24

私は問題を解決するため.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"

これは私には機能しません(BondedDustのソリューションも機能しません)。私はtxtファイルを作成し、それを.Rprofileとしてgetwd()からフォルダーに保存しました。
ジョン

2
@ジョン私は私たちが同じことを言っていると信じています。
私のようなコードに

3
RはCURRENTディレクトリからではなく、HOMEディレクトリから.Rprofileを読み取ります。
Crt

私は同様のアプローチを思い付いた、溶液がこの質問に対する解決策としてで提示されるstackoverflow.com/questions/31707941/...
マルコ

ホームdirectroyを見つけるにはSys.getenv("HOME")、rコンソールでrコマンドを発行します。希望する出力が得られるかどうかはわかりません。42が彼の回答stackoverflow.com/a/15170774/754550で示したものが望ましい出力だと思います。彼は少し異なる方法で.libPathsを使用しています。
miracle173 2017年


11

私はここで解決策だと思っているものを見つけまし(SFUのCarl Schwarzに感謝します)。私のMacマシンのデフォルト。SOでこれが明示的にレイアウトされているのを見たことがなかったので、Windowsの場合とMacの場合の手順をまとめました。

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. 「ホーム」または「ユーザー名」ディレクトリにRlibsと呼ばれるフォルダを作成します

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

  3. タイプ:echo "R_LIBS=~/Rlibs"> .Renvrion大文字小文字が一致することを確認します。

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

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

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


8

管理者権限がない場合はRprofile.site\ R-3.1.0 \ etcにある-file を開き、以下を追加すると便利です。

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

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


4

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

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

R_LIBS_USERユーザー変数を優先ディレクトリに(gorkyplの回答に従って)定義し、ユーザー変数が読み込まれるようにマシンを再起動します。Rstudioを開きます。エラーはなくなります。

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

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

読書help(Startup)は便利です。


2

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

.libPaths()

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

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

それが役に立てば幸い。



1

Readmeを読みました。彼らが言及した中で、コマンドラインで.libPaths()を使用して、そこにあるパスを確認します。以前に2つのライブラリパスがありました。コマンド.libpath( "C:/ Program Files / R / R-3.2.4revised / library")を使用したところ、ライブラリパスが変更されました。コマンドラインでもう一度.libPaths()と入力すると、正しいパスが表示されました。お役に立てれば


1

Ubuntuでは、ユーザーのデフォルトのライブラリパスを変更する推奨方法R_LIBS_USER~/.Renvironファイルに変数を設定することです。

touch ~/.Renviron
echo "R_LIBS_USER=/custom/path/in/absolute/form" >> ~/.Renviron

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

上記のリンクを二重逆コンマでコピーします

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

パッケージをインストールするためのデフォルトのパスが変更されます


0

Rに入るときに毎回ライブラリパスを(.libPath()を呼び出さずに)永久に変更したい場合、これは私にとってはうまくいきます:

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

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

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


-1

Rがデフォルトの場所へのインストールに問題があり、代わりにパッケージを一時フォルダーに置くため、これを調べていました。それは、明らかにRに問題があるMcaffee Endpoint Securityの最新のアップデートであることが判明しました。パッケージをインストールしている間は脅威防止を無効にすることができ、正しく動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.