文章目录
R 语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点
最近刚刚开始学习 R 语言,想要来个速通,结果第一天就踩坑了。写个笔记放在这里记录一下。
软件版本及环境
-
操作系统:Windows 10 22H2
-
R 版本:4.4.0,安装路径
D:\Program Files\R\R-4.4.0
-
RStdio 版本:RStudio-2024.04.1-748,安装路径
D:\Program Files\RStdio
遇到的问题描述
在 R 中安装库包:
install.packages("dplyr")
结果发现所有的包都被安装到 C 盘用户目录下面。我的 C 盘本来也没多大,本来容量就红盘。这样一安装就快爆盘了:
将程序包安装入‘C:/Users/asus/AppData/Local/R/win-library/4.4’
(因为‘lib’没有被指定)
还安装依赖关系‘fansi’, ‘utf8’, ‘pkgconfig’, ‘cli’, ‘generics’, ‘glue’, ‘lifecycle’, ‘magrittr’, ‘pillar’, ‘R6’, ‘tibble’, ‘tidyselect’, ‘vctrs’
如果遇到了相同的问题、不想看中间的细节的朋友可以直接拉到最底下看解决方案。
问题的分析和探究
使用 R 语言命令 .libPaths()
可以查看默认的 R 语言包的安装路径,发现输出结果为:
> .libPaths()
[1] "C:/Users/asus/AppData/Local/R/win-library/4.4"
[2] "D:/Program Files/R/R-4.4.0/library"
为了解决这个问题,根据 Chat 姐提供的帮助,修改 R 安装目录下的配置文件 Rprofile.site
,配置文件的完整路径位于:D:\Program Files\R\R-4.4.0\etc\Rprofile.site
。编辑这个文件需要管理员权限,因此可以使用下面的方法:
-
在 Windows 开始菜单中找到 Windows 附件 -> 记事本,选择“以管理员身份运行”。
-
在管理员权限下的记事本里面打开
D:\Program Files\R\R-4.4.0\etc\Rprofile.site
因为我的电脑上安装过 gsudo
和 MSYS2 Bash 以及 Vim,所以我可以直接 cd /d/Program Files/*/*/etc/
然后 sudo vim ./Rprofile.site
。
打开文件后在文件中添加如下的 R 命令:
.libPaths(“D:/Program Files/R/R-4.4.0/library”)
从理论上说,这个命令会在每次 R 语言启动的时候都设置 R 的语言包的安装路径为 "D:/Program Files/R/R-4.4.0/library"
装到 D 盘。但是实际上,我随即重启了 RStdio,再次执行命令:
> .libPaths()
[1] "C:/Users/asus/AppData/Local/R/win-library/4.4"
[2] "D:/Program Files/R/R-4.4.0/librar
路径并没有被修改。
这让我想起曾经初次配置 Python 的时候也遇到过类似的问题,Python 将所有的库全都装进了我的用户目录下。但 Python 和 R 不同,R 没有用户安装和全局安装这样的说法。那么这是什么原因造成的呢?
此时如果我们打开 R 语言原生的 GUI,执行相同的命令:
> .libPaths()
[1] "D:/Program Files/R/R-4.4.0/library"
会发现路径已经被变更。
究其原因,是因为 D:\Program Files
这个路径虽然不在系统盘(C盘)内,但仍然被 Windows 视作程序安装目录 C:\Program Files\
的一个延伸,属于系统目录的一部分,因此是需要管理员权限的。而且,程序和程序之间相互的目录访问都需要管理员权限。由于直接启动 RStdio 没有管理员权限,无法加载 D:\Program Files\R\R-4.4.0\etc\Rprofile.site
,从而导致配置没有生效。
最终的解决方案
折中方案
首先用下面的脚本删除所有除了基本包之外的 R 语言包:
# 获取当前的库路径列表
current_lib_paths <- .libPaths()
# 目标路径
target_path <- "D:/Program Files/R/R-4.4.0/library"
# 调整库路径顺序,使目标路径位于首位
new_lib_paths <- c(target_path, current_lib_paths[current_lib_paths != target_path])
# 设置新的库路径
.libPaths(new_lib_paths)
# 检查新的库路径
.libPaths()
每次启动 RStdio 都右键桌面或者开始菜单的快捷方式,然后选择“以管理员身份运行”。
根治方案
重装 R,安装到 D 盘根目录下D:\R\
,而不是程序目录 D:\Program Files\R\
。
其他在安装过程中需要注意的问题
将 R 安装路径添加到环境变量
R 语言在安装之后并不会自己添加环境变量,所以要手动把 R 安装路径下的 bin
目录追加到系统环境变量。
添加环境变量的具体方法在本文中不再赘述,直接在搜索引擎里搜索“如何设置环境变量”只要你用的不是百度基本上都能找到有用的资料。
设置 RStudio 的环境变量,或注册表
这是我推荐的一种方法,因为 RStdio 的启动确实有点麻烦。打个比方说如果我现在直接启动 RStudio 那么默认的工作空间就是我的用户主目录。比如如果我现在在使用 Windows 10 操作系统,那么这个路径就是 C:\Users\<用户名>\
,但是假如我现在有一个数据挂载在 D 盘的一个数据分析项目工作区文件夹 D:\我的文件\我的项目\数据分析项目\ProjectXXX\Data
,那我就必须先在文件管理器中用鼠标切换到这个路径,然后再在 R Terminal 中执行:
setwd(dir = "D:/我的文件/我的项目/数据分析项目/ProjectXXX/Data")
而且跟其他人交换代码的时候别人也不得不为此把这个路径额外再写一遍,很不方便。所以我们希望我们可以直接打开 RStudio 的时候就直接设置路径。当然,官方鼓励的做法是创建 RProject 来管理项目,但是本文作者作为 Shell 的重度用户,当然选择将 RStudio 的安装路径添加到环境变量了。
RStudio 的可执行文件可以接受一个参数 %1
,直接指定启动的路径。当然也有这么多可选参数:
$ rstudio --help
Options:
--version Display RStudio version
--version-json Display versions of major components in JSON format
--run-diagnostics Run diagnostics and save in a file
--log-level Sets the verbosity of the logging
--log-level=ERR|WARN|INFO|DEBUG
--log-dir The log directory to store log files in. The resulting log file name is based on the executable name.
--session-delay Pause the rsession so the "Loading R" screen displays longer
--session-exit Terminate the rsession immediately forcing error page to display
--startup-delay Pause before showing the application so the splash screen displays longer
--startup-delay=<number of seconds> 5 by default
--help Show this help
我只需要在终端执行 rstudio ./
,或者如果在使用 MSYS 2 Bash 之类的子系统环境也可以使用 start rstudio ./
,就可以在当前目录下打开 RStudio。
而如果你不喜欢用命令行执行 RStudio 请参照博客 Windows:设置右键用RStudio打开文件和文件夹 建议的方法。