r - 如何阻止 RStudio 在每次启动时在“/home”目录中创建空的“R”文件夹
问题描述
在为默认工作目录以及我在 RStudio 选项中的第一个(也是唯一一个)项目设置路径后,我想知道为什么 RStudio 每次启动时都会在我的“/home”目录中创建一个名为“R”的空文件夹。
有没有我可以删除/编辑(最终创建)的文件来阻止这种烦人的行为,如果有,它在哪里?
系统:Linux Mint v. 19.3 软件:RStudio v. 1.3.959 / R 版本 3.4.4
提前感谢您的任何提示。
解决方案
是的,您可以阻止创建R
目录 — <a href="https://stat.ethz.ch/R-manual/R-devel/library/base/html/libPaths.html" rel="nofollow noreferrer" >R 可通过一组环境变量进行配置。
但是,正确设置这些并非易事。第一个问题是许多 R 包对安装它们的 R 版本很敏感。如果您升级 R 并尝试加载现有包,它可能会损坏。因此,R 包库路径应特定于 R 版本。
在集群上,另一个问题是相同的库路径可能会被运行在不同架构上的各种集群节点读取;这是罕见的,但它会发生。在这种情况下,编译的 R 包可能需要根据架构而有所不同。
因此,通常 R 库路径需要特定于 R 版本和系统架构。
接下来,即使您配置了替代路径,如果它不存在,R 也会默默地忽略它。因此,请务必手动创建您已配置的目录。
最后,把这个配置放在哪里?一种选择是将其放入用户环境文件中,可以使用环境变量指定其路径R_ENVIRON_USER
——默认为$HOME/.Renviron
. 但这并不理想,因为这意味着用户在调用 R 时不能临时覆盖此设置:此文件中的变量会覆盖调用环境。
相反,我建议在用户配置文件中设置它(例如$HOME/.profile
)。但是,当您使用桌面启动器启动 RStudio 时,将不会读取此文件,因此请务必相应地编辑您的*.desktop
文件。1
因此,总而言之,将以下内容添加到您的$HOME/.profile
:
export R_LIBS_USER=${XDG_DATA_HOME:-$HOME/.local/share}/R/%p-library/%v
并确保该目录存在:re-source ~/.profile
(在当前的 shell 中启动一个新的 shell是不够的),然后执行
mkdir -p "$(Rscript -e 'cat(Sys.getenv("R_LIBS_USER"))')"
以上使用的是XDG 基础目录规范,这是 Linux 系统上的事实标准。2路径使用占位符%p
和%v
. R 将分别用系统平台和 R 版本(以 形式major.minor
)填写这些。
如果您想使用自定义 R 配置文件(“用户配置文件”)和/或 R 环境文件,我建议以相同的方式设置它们的位置,通过配置R_PROFILE_USER
和R_ENVIRON_USER
(因为它们的默认位置再次位于用户主页中目录):
export R_PROFILE_USER=${XDG_CONFIG_HOME:-$HOME/.config}/R/rprofile
export R_ENVIRON_USER=${XDG_CONFIG_HOME:-$HOME/.config}/R/renviron
1我没有 Linux 桌面系统,但我相信编辑以下Env
条目应该可以做到:
Exec=env R_LIBS_USER=${XDG_DATA_HOME:-$HOME/.local/share}/R/%p-library/%v /path/to/rstudio
2其他系统需要不同的处理方式。在 macOS 上,库位置的规范设置为$HOME/Library/Application Support/R/library/%v
. 但是,在 macOS 上为 GUI 应用程序设置环境变量非常复杂。
在 Windows 上,规范位置是%LOCALAPPDATA%/R/library/%v
. 要设置此变量,请[Environment]::SetEnvironmentVariable
在 PowerShell 中使用,或者在使用 时cmd.exe
,使用setx
.
推荐阅读
- postgresql - 在更新触发器之前不存在 PostgreSQL 10 错误关系新
- sql-server - 如何选择列值作为行?
- vue.js - 如何使用动态标题为整个 Vuetify 数据表行添加颜色
- javascript - 如何将 EJS 变量传递给 LightGallery 的 data-src
- c++ - 释放动态内存时出现 C++ 错误
- python - 即使使用 DJANGO 模型表单提交后,图片也没有在数据库中更新
- python - 如何在不影响滚动条颜色的情况下更改 QScrollArea 的背景颜色?
- javascript - 用于写博客的 Django 表单
- javascript - Webpack 在尝试构建 JSX 时抛出错误
- mysql - 如何更新具有键值对的 SQL 列?