在Rprofile.site中使用.libPaths更改R默认库path无法正常工作

我在Windows上运行R,而不是以pipe理员身份运行。 当我安装一个软件包时,以下命令不起作用:

> 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到库path中,从而不必每次都input它。

正如我在网上search,我发现一种方法是编辑Rprofile.site文件并添加行

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

但是,这样做后,启动RStudio,这是我得到的输出

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

我添加到Rprofile.site.libPaths命令似乎没有任何作用! 这是为什么? 或者更重要的是,我该如何解决这个问题,以便我可以在不input库位置的情况下安装和加载包?

注意:如果我启动RStudio,那么.libPaths()命令似乎可以正常工作

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

这不奇怪吗?

我通常会尽量将所有的包保存在一个库中,但是如果你想添加一个库,为什么不把新库添加到现有库中:

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

然后我得到:

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

.libPaths函数与大多数其他非graphics函数有点不同。 它通过副作用起作用。 报告和更改R环境variables的函数Sys.getenvSys.setenv已被拆分,但.libPaths可以报​​告或更改其目标。 有关R启动过程的信息可以在?Startup帮助页面阅读,并且有以下RStudio材料: https : //support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio

在你的情况下,似乎RStudio不尊重Rprofile.site设置,或者可能是通过从RStudio默认值之一读取.Rprofile设置覆盖它们。 还应该提到的是,这个操作的结果也会把调用的内容附加到.Library.Library.site ,这也是为什么一个RStudio(或者任何其他安装了IDE的networking)托pipe的R可能会performance出不同的行为。

正确的解决scheme是将环境variablesR_LIBS_USER设置为所需库文件夹的文件path的值,而不是使RStudio识别Rprofile.site文件。

要在Windows中设置环境variablesR_LIBS_USER ,请进入控制面板(系统属性 – >高级系统属性 – >环境variables – >用户variables)到所需的值(库文件夹的path),例如

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

设置R_LIBS_USER将确保无论直接启动RStudio,还是通过右键单击文件,然后单击“打开方式”启动RStudio,库都将首先显示在.libPaths()中。

如果始终通过单击RStudio快捷方式启动RStudio,则Rprofile解决scheme可以工作。 在这种情况下, 将默认工作目录设置到Rprofile所在的目录就足够了。 单击文件启动RStudio时,Rprofile解决scheme不起作用,因为它将工作目录从默认工作目录中移开。

我设法通过将.Rprofile文件中的代码放在默认的工作目录中来解决这个问题。

首先,我find了默认工作目录的位置

 > 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" 

如果您没有pipe理员权限,打开位于\ R-3.1.0 \ etc中Rprofile.site文件并添加:

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

这将直接在启动时评估.libPath()命令

我发现我认为这是一个解决scheme(感谢SFU的Carl Schwarz),因为添加一个永久性的个人图书馆(你不必每个会话都定义它)就能识别使用R还是Rstudio,而Rstudio将它视为在我的Mac机上默认。 我没有看到它明确地阐述了这一点,所以我总结了他们提供的步骤,Windows和Mac。

对于Windows 7操作系统:

  1. 在你想拥有个人图书馆的驱动器上创build一个目录,例如C:\ User \ Rlibs(或者你有权限的另一个目录)

  2. search/转到“编辑您的帐户的环境variables”

  3. 点击“环境variables”窗口中的“新build…”

  4. 在“新build用户variables”窗口中,为“variables名称”键入R_LIBS ,并创build个人库目录的path,例如C:\ User \ Rlibs

  5. 单击确定,您应该在用户variables窗口中看到variables/值对

  6. 再次单击确定

现在,当您启动R(或Rstudio)并键入命令.libPaths()您应该看到您创build的个人库以及R系统库。

对于Mac:

  1. 在您的“家庭”或“用户名”目录中创build一个名为Rlibs的文件夹

  2. 启动terminal应用程序

  3. types: echo "R_LIBS=~/Rlibs"> .Renvrion确保大小写匹配。

  4. inputls -a以查看目录中的文件的完整列表,该文件现在应包含.Renvrion

  5. validation.Renviron文件已被正确设置: more .Renviron

启动R / Rstudio并键入.libPaths() ,你应该看到你的个人图书馆的新path。

我很难理解这一点。 gorkypl给了上面正确的解决scheme,当我上次重新安装我的OS&Rstudio但这次,设置我的环境variables没有解决。

卸载R和Rstudio,创build目录C:\ R和C:\ Rstudio,然后重新安装两者。

将R_LIBS_USER用户variables定义到您的首选目录(根据gorkypl的答案),然后重新启动您的机器,以便加载Uservariables。 打开Rstudio,错误应该消失。

您也可以使用Sys.setenv()将R_LIBS_USER修改为您的替代库的path,这更容易,不需要重新启动计算机。

要查看R_LIBS_USER设置为: ?Sys.getenv()

阅读help(Startup)很有用。

如果在安装新版本的R或其他方式之后,您的默认软件包库已经被更改,那么您可以附加这两个库,以使用下面的命令来使用所有的软件包。 获取现有的库path:

.libPaths()

现在,设置现有的和旧的path:

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

希望它有帮助。

我读了自述文件。 在那里,他们提到在命令行中使用.libPaths()来检查哪些path在那里。 我早些时候有2个库path。 当我使用命令.libpath(“C:/ Program Files / R / R-3.2.4revised / library”)时,我改变了库的path。 当我再次在命令行键入.libPaths()时,它显示了正确的path。 希望这可以帮助

 getwd() 

[1]“C:/ Users /………./ software / My R studio”#用双引号复制上面的链接

 .libPaths(new="C:/Users/............/software/My R studio") #your default path will change for installing pakages 

我正在研究这个,因为R有安装到默认位置的问题,而不是把包放入临时文件夹。 事实certificate,这是Mcaffee Endpoint Security的最新更新,显然与R有关。您可以在安装软件包时禁用威胁防护,并且它可以正常工作。