.libPaths()
函数更改库路径顺序,如果我重新启动R,它都会恢复为默认设置。如何永久更改?我正在一个Linux计算集群上工作(我没有管理员权限),因此我想永久地将我的本地库添加到R中。每次启动R时,我都必须这样做。
.libPaths(c("/home/...","/home...","/local/library"))
.libPaths()
函数更改库路径顺序,如果我重新启动R,它都会恢复为默认设置。如何永久更改?我正在一个Linux计算集群上工作(我没有管理员权限),因此我想永久地将我的本地库添加到R中。.libPaths(c("/home/...","/home...","/local/library"))
为了完整起见,因为我无法在评论中展示这个:
所有Debian和Ubuntu系统都默认安装了R包,并附带以下路径:
edd@max:~$ R -q -e 'print(.libPaths())'
R> print(.libPaths())
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
[3] "/usr/lib/R/library"
R>
R>
我们可以通过修改R_LIBS_SITE
来更改它:
edd@max:~$ R_LIBS_SITE="/usr/lib/R/Library" R -q -e 'print(.libPaths())' R> print(.libPaths()) [1] "/usr/lib/R/library" R> R>
但是修改 R_LIBS
是不起作用的:
edd@max:~$ R_LIBS="/usr/lib/R/Library" R -q -e 'print(.libPaths())'
R> print(.libPaths())
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
[3] "/usr/lib/R/library"
R>
R>
edd@max:~$
请参阅help(Startup)
以获取完整详细的处理方式。在Debian和Ubuntu上,我们已经将这三个目录设置为默认值超过十年。由于此处使用了R_LIBS_SITE
,因此这就是您需要在此处更改的变量。一般来说,您需要覆盖保存值的变量,而您可能无法事先知道它是哪个。
关于原回答,对于Debian和Ubuntu操作系统,我们使用文件/etc/R/Renviron
。如help(Startup)
所述,您可以设置任何数量的方法来永久更改此项配置,而且所有不同的操作系统都适用以下几点:
Renviron
或Renviron.site
~/.Renviron
R_LIBS
、R_LIBS_USER
或R_LIBS_SITE
(如果您有适当的权限)R_LIBS
、R_LIBS_USER
或R_LIBS_SITE
.libPaths(...新路径在此处添加...)
,例如在.Rprofile
中。请查看help(Startup)
以获取更全面的讨论。
help(Startup)
更令人困惑,而不是有帮助的。 - Brian Dhelp(.libPaths)
和 help(Startup)
,也许可以寻找一些关于“定制你的 R 环境”的教程或博客。Windows 用户也可以这样做。 - Dirk EddelbuettelRprofile
的文件(不带点)。find -name Rprofile
#Getting something like:
#lib/R/library/base/R/Rprofile
打开文件并搜索:
invisible(.libPaths(c(unlist(strsplit(Sys.getenv("R_LIBS"), ":")),
unlist(strsplit(Sys.getenv("R_LIBS_USER"), ":") )
)))
注释掉其他路径并添加您所需的路径
invisible(.libPaths(c(#unlist(strsplit(Sys.getenv("R_LIBS"), ":")),
#unlist(strsplit(Sys.getenv("R_LIBS_USER"), ":") )
"/home/users/username/R/4.0.1/lib/R/library" # desired path
)))
.bashrc
文件)export R_LIBS='/home/users/username/R/4.0.1/lib/R/library'
export R_LIBS_USER='/home/users/username/R/4.0.1/lib/R/library'
两个主要解决方案:
In .Rprofile
you could leave code that sets .libPaths()
Just set the appropriate environment variable such as R_LIBS
in Windows or R_LIBS_SITE=
in Linux, etc, to whatever you like, e.g.
R_LIBS=C:/R/Library
help(Startup)
。 - Dirk Eddelbuettel.libPaths()
> [1] "/Users/<username>/Library/R/3.6/library"
> [2] "/Library/Frameworks/R.framework/Versions/3.6/Resources/library"
我喜欢把所有东西都放在一个地方(系统库)中,为了永久实现这一目标,我会执行以下操作:
在终端窗口中,在您的用户目录下创建一个.Rprofile
文件:
nano ~/.Rprofile
.libPaths( c(.libPaths()[2], .libPaths()[1]) )
或者,添加一行类似的R代码,但包含硬编码路径:
.libPaths( c("/Library/Frameworks/R.framework/Versions/3.6/Resources/library", "/Users/<username>/Library/R/3.6/library") )
将<username>
替换为您的实际用户名。 然后Ctrl-O
(保存)和Ctrl-X
(退出)该文件。
任何一行都可以交换上面列出的路径的顺序,以便路径[2]
(系统)排在第一位(默认),路径[1]
(用户)排在第二位。
重要的是,通过将此行代码放入您的用户的.Rprofile
中,每次启动R时都会运行它,这样您就不必再担心这个问题了。
.Rprofile
文件中。 - Joshua Ulrich~/.Rprofile
是a)可行的,b)比复制它更好。 - Dirk Eddelbuettel