在Rprofile中使用. 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添加到库路径中,从而不必每次都键入它。

当我在网上搜索时,我发现这样做的一种方法是编辑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命令似乎没有任何效果!为什么会这样呢?或者更重要的是,如何解决这个问题,以便在不输入库位置的情况下安装和加载包?

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

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

这不是很奇怪吗?

624647 次浏览

我通常尝试将所有的包保存在一个库中,但是如果您想添加一个库,为什么不将新的库(必须已经存在于您的文件系统中)附加到现有的库路径中呢?

.libPaths( c( .libPaths(), "~/userLibrary") )
# obviously this would need to be a valid file directory in your OS
# min just happened to be on a Mac that day

或者(这将使userLibrary成为第一个放置新包的地方):

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

然后我得到(至少回到我最初写这篇文章的时候):

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

.libPaths函数与大多数其他非图形函数略有不同。它通过副作用起作用。报告和改变R个环境变量的函数Sys.getenvSys.setenv已经被分开,但是.libPaths既可以报告也可以改变它的目标。

关于R启动过程的信息可以在?Startup帮助页中阅读,并且在https://support.rstudio.com/hc/en-us/articles/200549016-Customizing-RStudio中有RStudio材料

在您的案例中,RStudio似乎不尊重Rprofile。站点设置,或者通过从RStudio默认值之一读取. rprofile设置来覆盖它们。还应该提到的是,该操作的结果还将调用的内容追加到.Library.Library.site,这是RStudio-(或任何其他IDE或网络安装-)托管R可能表现出不同行为的进一步原因。

由于Sys.getenv()返回R进程的当前系统环境,您可以通过以下方式看到库和其他路径:

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

存储和访问包的两个关键是(现在在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/
 

我设法通过将代码放在默认工作目录中的.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"

正确的解决方案是将环境变量R_LIBS_USER设置为所需库文件夹的文件路径值,而不是让RStudio识别Rprofile。网站文件。

要在Windows中设置环境变量R_LIBS_USER,请转到控制面板(系统属性->先进的系统性能->环境变量->用户变量)到一个所需的值(到你的库文件夹的路径),例如。

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

如果由于某种原因您无法访问控制面板,您可以尝试从Windows上的命令行运行rundll32 sysdm.cpl,EditEnvironmentVariables,并从那里添加环境变量。

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

如果总是通过单击RStudio快捷方式启动RStudio,那么Rprofile解决方案就可以工作。在这种情况下,将默认工作目录设置为存放Rprofile的目录就足够了。当单击一个文件启动RStudio时,Rprofile解决方案不起作用,因为这会将工作目录从默认的工作目录更改。

如果你没有管理员权限,打开位于\ R-3.1.0 \等中的__abc0文件并添加:

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

这将在开始时直接计算.libPath()命令

我真的很难理解。当我上次重新安装我的操作系统时,gorkypl给出了正确的解决方案;但这一次,设置我的环境变量没有解决。

卸载R和Rstudio,创建目录C:\R和C:\Rstudio,然后重新安装它们。

将R_LIBS_USER用户变量定义到您的首选目录(根据gorkypl的回答),并重新启动您的机器以加载user变量。打开Rstudio,错误应该消失了。

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

查看R_LIBS_USER设置为什么: ?Sys.getenv() < / p >

读取help(Startup)是有用的。

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

复制上面的链接,带两个倒置逗号

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

安装包的默认路径将更改

如果您的默认包库在安装R的新版本或通过任何其他方式更改了,您可以在以下命令的帮助下添加这两个库以使用所有包。 获取现有库路径:

.libPaths()

现在,设置现有路径和旧路径:

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

希望能有所帮助。

我读了自述书。他们提到在命令行中使用. libpaths()来检查哪些路径存在。我之前有2个库路径。当我在我想要的地方使用命令.libpath("C:/Program Files/R/R-3.2.4revised/library")时,它改变了库路径。当我再次在命令行输入. libpaths()时,它显示了正确的路径。希望这能有所帮助

我发现我认为是一个解决方案在这里(谢谢你卡尔施瓦茨在SFU)添加了一个个人库,是永久的(你不必每次会话定义它)识别是否使用R或Rstudio, Rstudio把它作为我的Mac机器上的默认值。我没有在SO上看到它明确地列出这一点,所以我总结了他们提供的步骤,先是Windows,然后是Mac。

Windows 7操作系统:

  1. 在驱动器上创建一个目录,其中您想拥有您的个人库,例如C:\User\Rlibs(或其他您有权限的目录)

  2. 搜索/转到“为您的帐户编辑环境变量”;在Windows搜索栏中编辑控制面板设置

  3. < p >单击“新……“在“环境变量”中间;窗口

  4. 在“新用户变量”中;窗口,输入R_LIBS作为“变量名”,以及你创建的个人库目录的路径,例如C: \ \ Rlibs用户

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

  6. 再次单击“确定”

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

Mac:

  1. 在你的“家”;或“;username"目录创建一个名为Rlibs的文件夹

  2. 启动终端应用

  3. 类型:echo "R_LIBS=~/Rlibs" > .Renviron确保拼写和大小写匹配。

  4. 输入ls -a查看目录中文件的完整列表,现在应该包括.Renvrion

  5. 验证.Renviron文件已正确设置

启动R/Rstudio并输入.libPaths(),你应该会看到你的个人库的新路径。

我正在调查这个问题,因为R安装到默认位置有问题,而只是将包放入临时文件夹。原来这是Mcaffee Endpoint Security的最新更新,显然r有问题。你可以在安装包时禁用威胁保护,它会正常工作。

https://superuser.com/questions/749283/change-rstudio-library-path-at-home-directory < a href = " https://superuser.com/questions/749283/change-rstudio-library-path-at-home-directory " > < / >

编辑~ /。Renviron

R_LIBS_USER=/some/path

只需将R库的默认文件夹更改为没有管理员权限的目录,例如:

.libPaths("C:/R/libs")

如果你想永久地改变你的库路径(而不是每次在R中输入时调用.libPath()),这对我来说是可行的:

  1. 在你的主目录下创建。rprofile。(~ / .Rprofile)

  2. <李> < p >类型 .libPaths(c( .libPaths(), "your new path" ))

    .在。rprofile文件中保存
  3. 打开R(任意目录)并检查,只需输入.libPaths(),你可以发现你的库路径被更新了!

在Ubuntu上,更改用户默认库路径的推荐的方法是在~/.Renviron文件中设置R_LIBS_USER变量。

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

由于这里的大多数答案都与Windows &Mac OS,(并考虑到我也与此斗争)我决定张贴过程,帮助我解决这个问题在我的Arch Linux设置。

步骤1:

  • 在你的系统(例如ANGRYSearch)中全局搜索术语Renviron(这是设置用户库设置的配置文件)。
  • 它应该只在以下目录路径上返回两个结果
    1. /etc/R/ < br >
    2. <李> /usr/lib/R/etc/ < br > 注意:< / >强__ABC0配置文件存储在1 &2(上面)是相互热链接的(这意味着对一个文件所做的更改将在保存正在编辑的文件时自动应用于[以相同的形式/结构]到另一个文件-[你还需要sudo权限来保存编辑后的文件])

步骤2:

  • 导航到第一个目录路径(/etc/R/),并用你最喜欢的文本编辑器打开Renviron文件。
  • 一旦进入Renviron文件,搜索R_LIBS_USER标记,并将花括号部分中的文本更新到所需的目录路径。< br > < br > 例子: < br > ... 改变 (原始条目):
    R_LIBS_USER=${R_LIBS_USER-'~/R/x86_64-pc-linux-gnu-library/4.0'} < br > ... 改变 (您想要的入口):
    R_LIBS_USER=${R_LIBS_USER-'~/Apps/R/rUserLibs'} < br > < / >

步骤3:

  • 保存你刚刚编辑的Renviron文件…完成 ! !

我有同样的问题,我遇到。如果你想创建另一个位置c("C:/Users/mynewlocation")也应该工作。如前所述在这里 "你应该能够右键单击Rstudio.exe图标,单击属性,并选择一个选项,始终以管理员身份运行Rstudio。请确保在打开Rstudio."时使用相同的图标;

    myPaths <- .libPaths()   # get the paths
myPaths <- c(myPaths[2], myPaths[1])  # switch them
.libPaths(myPaths)  # reassign them