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

这不是很奇怪吗?


当前回答

通过将代码放在默认工作目录下的. 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://superuser.com/questions/749283/change-rstudio-library-path-at-home-directory

编辑~/。伦维隆

R_LIBS_USER=/some/path

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

.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/
 

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

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

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

.libPaths()

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

libPaths (c (libPaths()、“~ - yourOldPath”)

希望能有所帮助。

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

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

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