默认base环境无R内核,需创建独立conda-forge环境(如r44)并安装r-base=4.4.1与r-essentials,再运行IRkernel::installspec注册内核,最后激活环境启动Jupyter。

直接在 Anaconda 的 base 环境里跑 jupyter notebook,默认没有 R 内核——这不是漏装,而是设计如此。R 内核必须显式安装并注册到 Jupyter,且强烈建议**不复用 base 环境**,否则容易和 Python 包冲突、版本错乱、后续无法升级。
创建独立的 R 环境(推荐 conda-forge)
官方 defaults channel 的 r-base 最高只支持到 R 3.6,而当前稳定版已是 R 4.4+。硬要用 conda create -n r_env r-essentials 很可能卡在依赖解析或装上旧版 R 导致 IRkernel 兼容失败。
- 先加 conda-forge 源并设为高优先级:
conda config --add channels conda-forge,再执行conda config --set channel_priority strict - 查可用版本:
conda search r-base,确认目标版本(如4.4.1)存在 - 创建干净环境:
conda create -n r44 -c conda-forge r-base=4.4.1 - 激活后安装核心包:
conda activate r44→conda install -c conda-forge r-essentials
注意:r-essentials 已含 IRkernel,无需额外 install.packages();若手动装过 R 包,conda 会跳过重复项,但不会覆盖已存在的 R 包路径。
验证 IRKernel 是否已注册(关键检查点)
很多人以为装完 r-essentials 就万事大吉,结果打开 Jupyter 还是没 R 内核——根本原因是 IRkernel 没被注册进 Jupyter 的 kernel list。
- 激活环境:
conda activate r44 - 启动 R:
R(不是Rscript),然后运行:IRkernel::installspec(name = 'ir44', displayname = 'R 4.4.1') - 退出 R,执行:
jupyter kernelspec list,应看到类似ir44 /home/xxx/.local/share/jupyter/kernels/ir44
如果报错 command 'jupyter-kernelspec' not found,说明当前环境没装 jupyter ——此时要 conda install jupyter,而不是全局 pip 安装。
Windows 下常见路径与权限坑
在 Windows 上,IRkernel::installspec() 经常因路径含空格或权限不足失败,尤其当 Anaconda 装在 C:\Program Files\ 下。
- 避免使用默认安装路径:重装 Anaconda 到无空格路径,如
C:\anaconda3 - 不要用普通 CMD 或 PowerShell:必须用 **Anaconda Prompt**(它自动初始化 conda 环境变量)
- 若提示 “Permission denied” 或写入
kernels目录失败,手动指定用户级安装:IRkernel::installspec(user = TRUE) - 验证是否生效:
jupyter kernelspec list输出中路径应指向%USERPROFILE%\.local\share\jupyter\kernels\...,而非系统级路径
启动 Jupyter 前必须激活对应环境
Jupyter 启动时读取的是当前 shell 的 Python/R 环境,不是你“以为”的那个环境。直接双击 Navigator 里的 Jupyter 图标,大概率还是 base 环境。
- 正确做法:在 Anaconda Prompt 中先
conda activate r44,再jupyter notebook - 如果用 VS Code + Jupyter 插件,需在命令面板(Ctrl+Shift+P)里选 “Jupyter: Select Interpreter to Start Jupyter Server”,然后选中
r44环境下的 Python 解释器(注意:这里选的是 Python,但内核由IRkernel提供) - 新建 notebook 后,右上角 Kernel 下拉菜单必须显示 “R 4.4.1”(即你
displayname设的值),不是 “Python 3”
最易忽略的一点:conda 环境名、kernel name、displayname 三者可以不同,但只有 kernel name(如 ir44)决定了文件系统里 kernel 的目录名,一旦注册错误,得手动删掉 ~/.local/share/jupyter/kernels/ir44 再重装。

















