[英]How to reset or completely override .libPaths in R?
我希望.libPaths()
返回"/home/balter/R" "/home/balter/conda/envs/dada2/lib/R/library"
。
这就是我得到的:
> .libPaths()
[1] "/home/balter/R" "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
[4] "/usr/lib/R/library"
> .libPaths(new='/home/balter/conda/envs/dada2/lib/R/library')
> .libPaths()
[1] "/home/balter/conda/envs/dada2/lib/R/library" "/usr/local/lib/R/site-library"
[3] "/usr/lib/R/site-library" "/usr/lib/R/library"
> .libPaths(new=c("/home/conda/envs/dada2/lib/R/library", "/home/balter/R"))
> .libPaths()
[1] "/home/balter/R" "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
[4] "/usr/lib/R/library"
> .libPaths(c("/home/conda/envs/dada2/lib/R/library", "/home/balter/R"))
> .libPaths()
[1] "/home/balter/R" "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
[4] "/usr/lib/R/library"
> .libPaths(c("/home/conda/envs/dada2/lib/R/library", "/home/balter/R"))
> .libPaths()
[1] "/home/balter/R" "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
[4] "/usr/lib/R/library"
> .libPaths(new=c("/home/conda/envs/dada2/lib/R/library", "/home/balter/R"))
> .libPaths()
[1] "/home/balter/R" "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
[4] "/usr/lib/R/library"
> .libPaths(new="home/balter/R")
> .libPaths()
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library" "/usr/lib/R/library"
> .libPaths("home/balter/R")
> .libPaths()
[1] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library" "/usr/lib/R/library"
我似乎无法清除并重置路径。
这是RStudio Server免费版,可在localhost上的WSL Ubuntu 18.04中运行。
@Dason指出了一个错字。 更正我有:
> .libPaths()
[1] "/home/balter/R/x86_64-pc-linux-gnu-library/3.4" "/usr/local/lib/R/site-library"
[3] "/usr/lib/R/site-library" "/usr/lib/R/library"
> .libPaths(c("/home/balter/conda/envs/dada2/lib/R/library", "~/R"))
> .libPaths()
[1] "/home/balter/conda/envs/dada2/lib/R/library" "/home/balter/R"
[3] "/usr/local/lib/R/site-library" "/usr/lib/R/site-library"
[5] "/usr/lib/R/library"
>
有没有一种方法可以完全摆脱默认设置,从而只包括第一个?
这已经很老了,但是没有标记答案,所以这是我的输入:
我刚刚通过在项目目录的根目录中定义.Renviron来覆盖rstudio服务器的默认R_ *环境变量来解决此确切问题。
# .Renviron example - set exclusive R library
R_LIBS=/path/to/your/envs/R/library/ # Set env's R library location
R_LIBS_USER="" # Unset user's local R library
R_LIBS_SITE="" # Unset default system R libraries
# !EDIT! - Make sure the version of R you set to R_HOME is the one that RStudio-Server
# is running. (I haven't been able to get the server to run Anaconda's version)
# When I changed R_HOME to the version in my conda env and the server was running
# the system R, it broke all of the locally compiled packages.
R_HOME=/path/to/your/envs/R # Reset R's home directory to the one in the env's home
如果您不知道,.Renviron是R会话启动时运行的脚本。 顾名思义,它专门用于设置环境变量。
您还可以在启动时以.Rprofile脚本运行R代码。 下面的示例脚本将为您的.libPaths添加新路径,但不会导致删除通过在R_LIBS *目录中搜索而找到的库。
# .Rprofile - set .libPaths
assign(".lib.loc", "/path/to/your/envs/R/library/", envir = environment(.libPaths))
您可以从项目根目录,用户主目录和R的主目录中级联这些配置文件,它们将优先按该顺序运行(但仅会运行每种脚本类型的第一个)。
我认为.Renviron在.Rprofile之后运行(或稍后处理环境变量),因为我使用上述.Rprofile脚本所做的更改始终被环境变量覆盖。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.