每当我使用.libPaths()
函数更改库路径顺序时,如果我重新启动R,它将恢复为默认值。如何永久更改此值?我正在研究Linux计算集群(我没有管理员权限)所以,我想永久地将我的本地库添加到R.
每次开始R
时我都必须这样做.libPaths(c("/home/...","/home...","/local/library"))
答案 0 :(得分:15)
为了完整性,我无法在评论中表明这一点:
1)所有装有R软件包的Debian和Ubuntu系统都默认使用:
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>
2)我们可以通过修改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>
3)但是修改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
设置的,因此这是您需要在此处更改的变量。通常,您需要覆盖保存值的变量,您可能不知道 ex ante 是哪一个。
至于原始答案,在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(...new path to be added here...)
,例如在.Rprofile
。请参阅help(Startup)
进行更全面的讨论。
答案 1 :(得分:3)
2个主要解决方案:
在user has_many adverts
中,您可以留下设置advert belongs_to user
只需将适当的环境变量(如Windows中的.Rprofile
或Linux中的.libPaths()
等)设置为您喜欢的任何内容,例如
R_LIBS
答案 2 :(得分:2)
在R安装文件夹中找到Rprofile
文件(无点)
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'
答案 3 :(得分:0)
在Mac上,我发现在“全新”安装中没有用户库,并且所有软件包均安装在特定于版本的系统库中。最终,将创建一个用户库(可能是偶然地或通过RStudio提示符),并将其设置为默认位置以供将来安装软件包。因此,如果您不密切注意,则最终会在系统库中安装一些软件包,并在用户库中安装一些软件包。
用户库位于第一位,系统库位于第二位:
.libPaths()
> [1] "/Users/<username>/Library/R/3.6/library"
> [2] "/Library/Frameworks/R.framework/Versions/3.6/Resources/library"
我喜欢将所有内容都放在一个地方(系统库),因此(永久地)要执行以下操作:
在“终端”窗口中,在用户目录中创建一个.Rprofile
文件:
nano ~/.Rprofile
在该文件中,添加以下R代码行:
.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启动时运行,并且您(希望)不必再为此担心。