在 RStudio 选项中设置默认工作目录以及我的第一个(也是唯一)项目的路径后,我想知道为什么 RStudio 每次都会在我的“/home”目录中创建一个名为“R”的空文件夹开始了。
是否有任何我可以删除/编辑(最终创建)的文件来阻止这种烦人的行为,如果有,它位于哪里?
系统:Linux Mint v.19.3 软件:RStudio v.1.3.959/R版本3.4.4
预先感谢您的任何提示。
最佳答案
是的,您可以阻止创建 R
目录 — R is configurable通过一组环境变量。
但是,正确设置这些并不简单。第一个问题是许多 R 软件包对其安装的 R 版本很敏感。如果您升级 R 并尝试加载现有包,它可能会崩溃。因此,R包库路径应该特定于R版本。
在集群上,另一个问题是相同的库路径可能会被运行在不同架构上的不同集群节点读取;这种情况很少见,但确实发生了。在这种情况下,编译的 R 包可能需要根据架构而有所不同。
因此,一般来说,R 库路径需要特定于 R 版本和系统架构。
接下来,即使您配置了替代路径,如果它不存在,R 也会默默地忽略它。因此,请务必手动创建您已配置的目录。
最后,这个配置该放在哪里?一种选择是将其放入 user environment file ,其路径可以使用环境变量 R_ENVIRON_USER
指定 - 默认为 $HOME/.Renviron
。但这并不理想,因为这意味着用户在调用 R 时无法临时覆盖此设置:此文件中的变量覆盖调用环境。
相反,我建议在用户配置文件中进行设置(例如 $HOME/.profile
)。但是,当您使用桌面启动器启动 RStudio 时,将不会读取此文件,因此请务必edit your *.desktop
file accordingly .1
总而言之,将以下内容添加到您的 $HOME/.profile
中:
export R_LIBS_USER=${XDG_DATA_HOME:-$HOME/.local/share}/R/%p-library/%v
并确保此目录存在:重新源 ~/.profile
(在当前 shell 中启动一个新 shell 还不够),然后执行
mkdir -p "$(Rscript -e 'cat(Sys.getenv("R_LIBS_USER"))')"
以上使用XDG base dir specification ,这是 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 应用程序设置环境变量是 frustratingly complicated .
在 Windows 上,规范位置为 %LOCALAPPDATA%/R/library/%v
。要设置此变量,请使用 [Environment]::SetEnvironmentVariable
在 PowerShell 中或使用 cmd.exe
时,使用 setx
.
关于r - 如何阻止 RStudio 在每次启动时在 "R"目录中创建空的 "/home"文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63163719/