我在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。站点文件并添加行

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

然而,在这样做并启动RStudio之后,这是我得到的输出

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

我添加到Rprofile的. libpaths命令。网站似乎没有任何效果!为什么会这样呢?或者更重要的是,如何解决这个问题,以便在不输入库位置的情况下安装和加载包?

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

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

这不是很奇怪吗?


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

.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函数与大多数其他非图形函数略有不同。它通过副作用起作用。Sys. Sys。getenv和Sys。setenv报告和改变R环境变量已经被分开,但是. libpaths可以报告或改变它的目标。

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

在您的案例中,RStudio似乎不尊重Rprofile。站点设置,或者通过从RStudio默认值之一读取. rprofile设置来覆盖它们。还应该提到的是,该操作的结果还将调用的内容追加到. library和. library。站点,这就是为什么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  

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

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

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


如果您没有管理员权限,打开Rprofile也会很有帮助。站点文件位于\R-3.1.0\etc,并添加:

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

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


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

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

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

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

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

阅读帮助(启动)是有用的。


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的Carl Schwarz),您添加了一个个人库,无论使用R还是Rstudio,它都是永久识别的(您不必每次会话都定义它),Rstudio将它作为我Mac机器上的默认值。我没有在SO上看到它明确地列出这一点,所以我总结了他们提供的步骤,先是Windows,然后是Mac。

Windows 7操作系统:

Create a directory on the drive where you want to have your personal library, e.g. C:\User\Rlibs (or another that you have permissions to) Search for/go to "Edit environment variable for your account" in the Windows search bar to edit control panel settings Click "New..." in the middle of the "Environmental Variables" window In the "New User Variable" window, type R_LIBS for the "Variable name", and the path to the personal library directory you created, e.g. C:\User\Rlibs Click OK and you should see the Variable/Value pair in the User variables window Click OK again

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

Mac:

在“Home”或“username”目录中创建一个名为Rlibs的文件夹 启动终端应用程序 类型:echo "R_LIBS=~/Rlibs" > . renviron确保拼写和大小写匹配。 输入ls -a查看目录中文件的完整列表,现在应该包括.Renvrion 验证.Renviron文件已正确设置:更多.Renviron

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


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


https://superuser.com/questions/749283/change-rstudio-library-path-at-home-directory

编辑~/。伦维隆

R_LIBS_USER=/some/path

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

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

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

在你的主目录下创建。rprofile。(~ / .Rprofile) 类型 .libPaths(c(.libPaths(), "你的新路径")) 在. rprofile文件中保存。 打开R(任意目录)并检查,只需输入.libPaths(),你可以发现你的库路径更新了!


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

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

由于这里的大多数答案都与Windows和Mac OS有关,(考虑到我也在努力解决这个问题)我决定在Arch Linux安装中发布帮助我解决这个问题的过程。

步骤1:

Do a global search of your system (e.g. ANGRYSearch) for the term Renviron (which is the configuration file where the settings for the user libraries are set). It should return only two results at the following directory paths: /etc/R/ /usr/lib/R/etc/ NOTE: The Renviron config files stored at 1 & 2 (above) are hot-linked to each other (which means changes made to one file will automatically be applied [ in the same form / structure ] to the other file when the file being edited is saved - [ you also need sudo rights for saving the file post-edit ] ).

步骤2:

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

步骤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