首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Rprofile.site中使用.libPaths更改R默认库路径失败

在Rprofile.site中使用.libPaths更改R默认库路径失败
EN

Stack Overflow用户
提问于 2013-03-02 11:36:02
回答 15查看 547.5K关注 0票数 247

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

代码语言:javascript
复制
> 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

要安装软件包,我必须指定一个库位置:

代码语言:js
复制
install.packages("zoo", lib="C:/software/Rpackages")

要加载包,我还必须指定库的位置:

代码语言:js
复制
library("zoo", lib.loc="C:/software/Rpackages")

所有这些都是可以的,但是我想看看我是否可以添加C:/software/Rpackages以某种方式添加到库路径,因此不必每次都键入它。

当我在网上搜索时,我发现其中一种方法是编辑Rprofile.site文件,并添加以下行

代码语言:js
复制
.libPaths("C:/software/Rpackages")

但是,在执行此操作并启动RStudio之后,这是我得到的输出

代码语言:javascript
复制
> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library"

The The The.libPaths命令,我将该命令添加到

Rprofile.site似乎没有任何效果!为甚麽会这样呢?或者更重要的是,我如何解决这个问题,这样我就可以在不输入库位置的情况下安装和加载软件包?

注意:如果我启动RStudio.libPaths()命令似乎按预期方式工作

代码语言:javascript
复制
.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"

这不是很奇怪吗?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2013-03-02 12:39:33

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

代码语言:javascript
复制
.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成为放置新包的第一个位置):

代码语言:js
复制
.libPaths( c( "~/userLibrary" , .libPaths() ) )

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

代码语言:javascript
复制
> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/2.15/Resources/library"
[2] "/Users/user_name/userLibrary"

The The The.libPaths函数与大多数其他非图形函数略有不同。它通过副作用起作用。函数Sys.getenvSys.setenv该报告和alter R环境变量已被拆分,但是

.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或网络)托管的R可能表现出不同行为的进一步原因。

因为Sys.getenv()返回R进程的当前系统环境,您可以使用以下命令查看库和其他路径:

代码语言:js
复制
Sys.getenv()[ grep("LIB|PATH", names(Sys.getenv())) ]

存储和访问包的两个重要因素是(现在在Linux机器上是不同的):

代码语言:javascript
复制
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/
票数 199
EN

Stack Overflow用户

发布于 2013-10-29 23:43:23

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

设置环境变量R_LIBS_USER在Windows中,转到控制面板(系统属性->高级系统属性->环境变量->用户变量),将其设置为所需的值(库文件夹的路径),例如

代码语言:javascript
复制
Variable name: R_LIBS_USER 
Variable value: C:/software/Rpackages

如果由于某些原因您无法访问控制面板,您可以尝试运行

rundll32 sysdm.cpl,EditEnvironmentVariables

从Windows上的命令行添加环境变量。

设置R_LIBS_无论是直接启动RStudio,还是通过右键单击文件并“打开方式”启动RStudio,用户都将确保库首先出现在.libPaths()中。

如果始终通过单击RStudio快捷方式启动RStudio,则可以使用Rprofile解决方案。在这种情况下,将默认工作目录设置为存放Rprofile的目录

就足够了。当单击文件以启动RStudio时,Rprofile解决方案不起作用,因为这会将工作目录从默认工作目录更改为非默认工作目录。

票数 258
EN

Stack Overflow用户

发布于 2013-03-04 14:33:39

我设法解决了这个问题,方法是将代码放在.Rprofile默认工作目录中的文件。

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

代码语言:javascript
复制
> getwd()
[1] "C:/Users/me/Documents"

然后,我使用文本编辑器编写了一个简单的.Rprofile文件中包含以下行

代码语言:js
复制
.libPaths("C:/software/Rpackages")

最后,当我开始R然后运行.libPaths()我得到了想要的输出:

代码语言:javascript
复制
> .libPaths()
[1] "C:/software/Rpackages"               "C:/Program Files/R/R-2.15.2/library"
[3] "C:/Program Files/RStudio/R/library"
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15170399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档