首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在R中重置或完全覆盖.libPaths?

如何在R中重置或完全覆盖.libPaths?
EN

Stack Overflow用户
提问于 2018-09-14 02:16:26
回答 1查看 887关注 0票数 0

我想让.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" 

我似乎不能清理和重置路径。

注意:

这是在本地主机上的WSL Ubuntu18.04中运行的RStudio服务器免费版本。

注二:

@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"                         
> 

有没有一种方法可以完全摆脱默认值,只包含第一个?

EN

回答 1

Stack Overflow用户

发布于 2019-06-04 14:31:45

这是相当旧的,但没有标记答案,所以这是我的输入:

我刚刚通过在项目目录的根目录中定义一个.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脚本所做的更改总是被环境变量覆盖。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52319609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档