R 语言入门学习笔记:第〇节,软件安装踩坑记录——如何一次删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,添加“在 R Studio 中打开”到右键菜单,以及一些其他需要注意的点
R 语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点
背景
最近刚刚开始学习R语言,想要来个速通,结果第一天就踩坑了。写个笔记放在这里记录一下。
关于 R 语言的安装方法我这里就不再赘述了。考虑到现在网上已经有了很多很全面的教程,我这里粘贴一些值得参照的教程的链接:
针对完全不熟悉的读者,这里再声明一下:通常情况下,对于一种编程语言,我们通常要安装两件东西:
一个是编程语言的本体(一般情况下,也就是大家在大一时学习计算机编程扫盲课的时候接触到的所谓编译器或者解释器的概念,以及一些默认安装的库)。
另一个是用来写编程语言用的工具。针对R语言我们使用的是R Studio。并没有什么别的原因,只是因为它太好用了。
照着上面我给出的这些文章和视频的教程去安装,肯定能够准确安装R Studio。
问题与解决
我的软件版本及环境
- 操作系统:Windows 10 22H2
- R 版本:4.4.0,安装路径
D:\Program Files\R\R-4.4.0
- Rstudio 版本:RStudio-2024.04.1-748,安装路径
D:\Program Files\Rstudio
遇到的问题描述
在 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 盘。但是实际上,我随即重启了 Rstudio,再次执行命令:
> .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\
的一个延伸,属于系统目录的一部分,因此是需要管理员权限的。而且,程序和程序之间相互的目录访问都需要管理员权限。由于直接启动 Rstudio 没有管理员权限,无法加载 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()
每次启动 Rstudio 都右键桌面或者开始菜单的快捷方式,然后选择“以管理员身份运行”。
根治方案
重装 R,安装到 D 盘根目录下D:\R\
,而不是程序目录 D:\Program Files\R\
。
其他在安装过程中需要注意的问题
将 R 安装路径添加到环境变量
R 语言在安装之后并不会自己添加环境变量,所以要手动把 R 安装路径下的 bin
目录追加到系统环境变量。
添加环境变量的具体方法在本文中不再赘述,直接在搜索引擎里搜索“如何设置环境变量”只要你用的不是百度基本上都能找到有用的资料。
设置 RStudio 的环境变量,或注册表
这是我推荐的一种方法,因为 Rstudio 的启动确实有点麻烦。打个比方说如果我现在直接启动 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打开文件和文件夹 建议的方法。
附录
2024年11月23日更新:为了方便大家将“在 R Studio 中打开”添加到右键菜单目录,我写了一个简单的实现脚本。这个脚本的功能不仅能够将 R Studio 的当前目录启动按钮显示在右键菜单中,而且能正确显示中文文本和图标(如下图所示)。
脚本可以随取随用,但是使用前请根据脚本注释及提示信息:
- 调整 R Studio 安装路径的变量声明。
- 以管理员身份运行脚本,否则脚本将无法正常生效工作。
@echo off
:: name : setRStudioContextMenu.cmd
:: author : BOXonline_1396539
:: date : 20241015
:: licence : MIT Copyright (c) 2024 Githubonline1396529
:: version : 0.1.1
::
:: ========================
:: R Studio 右键菜单设置脚本
:: ========================
::
:: 本脚本将会编辑注册表将 RStudio 添加到右键菜单,自动实现在 RStudio 中
:: 打开文件和打开当前目录的功能,自动适配 RStudio 图标。
::
:: 注意!在运行本脚本之前,您需要注意以下事项:
::
:: (一)手动编辑脚本中的 `RSTUDIO_PATH` 变量,使之与您的 RStudio 安
:: 装位置下的 `rstudio.exe` 完全相符;
:: (二)必须使用管理员模式运行本脚本文件。
::
:: TODO: 在这里修改 RStudio 的安装路径
set "RSTUDIO_PATH=D:\Program Files\RStudio\rstudio.exe"
echo ========================
echo RStudio 右键菜单设置脚本
echo ========================
echo=
echo 【作者】盒子online_1396529
echo 【日期】2024 年 10 月 15 日
echo=
echo 本脚本将会编辑注册表将 RStudio 添加到右键菜单,自动实现在 RStudio 中
echo 打开文件和打开当前目录的功能,自动适配 RStudio 图标。
echo=
echo 注意!在运行本脚本之前,您需要注意以下事项:
echo=
echo (一)手动编辑脚本中的 `RSTUDIO_PATH` 变量,使之与您的 RStudio 安
echo 装位置下的 `rstudio.exe` 完全相符!
echo (二)必须使用管理员模式运行本脚本文件!
echo=
:: 检查 RStudio 路径是否存在,如果不存在则弹出错误提示
if not exist "%RSTUDIO_PATH%" (
echo 错误:%RSTUDIO_PATH% 路径不存在,请检查路径。
pause
exit /b 1
)
:: 提示用户是否继续修改注册表
set /p "choice=是否继续修改注册表?(yes/no): "
:: 将用户输入转换为小写
set choice=%choice:~0,1%
if /i "%choice%" neq "y" (
echo 操作已取消。
pause
exit /b 0
)
:: 创建 HKEY_CLASSES_ROOT\*\shell\RStudio 路径
reg add "HKEY_CLASSES_ROOT\*\shell\RStudio" /ve /d "通过RStudio打开" /f
reg add "HKEY_CLASSES_ROOT\*\shell\RStudio\command" /ve /d "\"%RSTUDIO_PATH%\" \"%%1\"" /f
reg add "HKEY_CLASSES_ROOT\*\shell\RStudio" /v "Icon" /d "%RSTUDIO_PATH%" /f
:: 创建 HKEY_CLASSES_ROOT\Directory\Background\shell\RStudio 路径
reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\RStudio" /ve /d "通过RStudio打开" /f
reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\RStudio\command" /ve /d "\"%RSTUDIO_PATH%\" \"%%V\"" /f
reg add "HKEY_CLASSES_ROOT\Directory\Background\shell\RStudio" /v "Icon" /d "%RSTUDIO_PATH%" /f
echo 注册表修改完成!
pause