我在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"
The The The.libPaths
命令,我将该命令添加到
Rprofile.site
似乎没有任何效果!为甚麽会这样呢?或者更重要的是,我如何解决这个问题,这样我就可以在不输入库位置的情况下安装和加载软件包?
注意:如果我启动RStudio.libPaths()
命令似乎按预期方式工作
.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
这不是很奇怪吗?
发布于 2013-03-02 12:39:33
我通常会尝试将我所有的包放在一个库中,但是如果您想添加库,为什么不将新的库(它必须已经存在于您的文件系统中)附加到现有的库路径中呢?
.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"
The The The.libPaths
函数与大多数其他非图形函数略有不同。它通过副作用起作用。函数Sys.getenv
和Sys.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进程的当前系统环境,您可以使用以下命令查看库和其他路径:
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/
发布于 2013-10-29 23:43:23
正确的解决方案是设置环境变量R_LIBS_USER
设置为所需库文件夹的文件路径的值,而不是让RStudio识别Rprofile.site文件。
设置环境变量R_LIBS_USER
在Windows中,转到控制面板(系统属性->高级系统属性->环境变量->用户变量),将其设置为所需的值(库文件夹的路径),例如
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解决方案不起作用,因为这会将工作目录从默认工作目录更改为非默认工作目录。
发布于 2013-03-04 14:33:39
我设法解决了这个问题,方法是将代码放在.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"
https://stackoverflow.com/questions/15170399
复制相似问题