我在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
Run Code Online (Sandbox Code Playgroud)
要安装软件包,我必须指定一个库位置:
install.packages("zoo", lib="C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)
要加载包,我还必须指定库位置:
library("zoo", lib.loc="C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)
所有这一切C:/software/Rpackages都没问题,但我想知道是否可以以某种方式添加到库路径,因此不必每次都输入它.
当我在网上搜索时,我发现一种方法是编辑Rprofile.site文件并添加行
.libPaths("C:/software/Rpackages")
Run Code Online (Sandbox Code Playgroud)
但是,在执行此操作并启动RStudio之后,这就是我得到的输出
> .libPaths()
[1] "C:/Program Files/R/R-2.15.2/library" "C:/Program Files/RStudio/R/library"
Run Code Online (Sandbox Code Playgroud)
在.libPaths我加入命令Rprofile.site似乎并没有有任何影响!为什么会这样?或者更重要的是,如何解决问题以便我可以在不输入库位置的情况下安装和加载包?
注意:如果我启动RStudio,.libPaths()命令似乎按预期工作
.libPaths("C:/software/Rpackages")
> .libPaths()
[1] "C:/software/Rpackages" "C:/Program Files/R/R-2.15.2/library"
Run Code Online (Sandbox Code Playgroud)
这不奇怪吗?
我刚刚在我的Linux Mint 18.1 Cinnamon机器上更新到R(3.4.1"单烛"),我试图安装一个包.R返回以下内容:
> install.packages('ggplot2')
Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)
Warning in install.packages("ggplot2") :
'lib = "/usr/local/lib/R/site-library"' is not writable
Would you like to use a personal library instead? (y/n) y
Would you like to create a personal library
NA
to install packages into? (y/n) y
Error in install.packages("ggplot2") : unable to create ‘NA’
Run Code Online (Sandbox Code Playgroud)
我之前遇到过'lib not writable'输出,但通常它提供了类似这样的解决方案:
Would you like to create a personal library
~/R/x86_64-pc-linux-gnu-library/3.4
to install packages into? (y/n) y
Run Code Online (Sandbox Code Playgroud)
个人图书馆建议NA的任何想法?有没有办法手动覆盖这个?
每当我使用该.libPaths()函数更改库路径顺序时,如果我重新启动R,它将恢复为默认值.如何永久更改此值?我正在研究Linux计算集群(我没有管理员权限)所以,我想永久地将我的本地库添加到R.
我每次开始做R都必须这样做
.libPaths(c("/home/...","/home...","/local/library"))
Run Code Online (Sandbox Code Playgroud)