第1章 R语言概述
你好,欢迎来到这门课。我是老周,干了快十年数据科学,R 语言几乎是天天用。很多人觉得学 R 就是装个软件然后敲命令,其实真上手了会发现——嗯,开局选对工具链能少走一半弯路。
这一章我们先把地基打牢。内容是三块:R 语言凭什么值得学,RStudio 怎么装、怎么配,还有包管理那些坑我怎么踩过来的。没什么高深算法,但这些都是每天要碰的东西。
1.1 R 语言到底好在哪?
有时候有人问我:Python 也挺好,为什么还要学 R?我一般会反问:你做统计分析的时候,是喜欢一行代码就出图,还是得先装一堆库再调参数?R 的强项就在这里——它生来就是为了统计和可视化的。
我总结几个最直接的特点:
- 统计基因:R 的核心就是统计建模,t 检验、回归、聚类、时间序列,都是原生的。
- 图形能力:ggplot2 一出,画图的语法比 matplotlib 优雅太多。我做报告时几乎不碰其他工具。
- 社区包:CRAN 上两万多个包,你想到的模型基本都有现成的。别自己造轮子。
- 跨平台:Windows、macOS、Linux 都能跑,我经常在服务器上用命令行跑 R 脚本。
1.2 R与RStudio安装——别踩的坑
安装这件事,说白了就是两步:装 R 核心,再装 RStudio。但我在项目中遇到过不少同事装完之后打不开包,或者中文乱码,都是因为版本没对上。
1.2.1 安装 R
去 CRAN(https://cran.r-project.org/)下载对应操作系统的安装包。我建议选最新稳定版,不用追预览版。安装时保持默认路径,唯一要注意的是——
Windows用户:安装时不要勾选“将R添加到系统PATH”,RStudio会自己管理路径。你手动加了反而可能与别的环境冲突。我吃过这个亏,后来重装才解决。
安装完成后,打开 R 自带的命令行界面试一下:
print("Hello, R!")
看到输出就没问题。但我个人习惯直接装好 RStudio,因为 R 原生的界面实在太简陋了。
1.2.2 安装 RStudio
去 Posit 官网(https://posit.co/download/rstudio-desktop/)下载免费的 Desktop 版本。安装过程一路默认就行。
我曾经遇到 RStudio 启动后报错“R not found”,原因是 R 的安装路径里有中文或空格。解决办法:安装 R 时选择纯英文路径,比如 C:\R\R-4.3.2。
1.2.3 配置建议
第一次打开 RStudio,我建议先做两件事:
- 设置镜像:在 Tools -> Global Options -> Packages 里把 CRAN 镜像改成国内的(比如清华或中科大),不然下载包慢到怀疑人生。
- 调整代码显示:我习惯勾选“Soft-wrap R source files”,这样长代码自动换行,不用拖滚动条。
1.3 包管理——R的灵魂
R 的包管理说简单也简单,说不简单… 我刚开始学的时候因为装包踩了无数坑,现在把经验告诉你。
1.3.1 基本操作
安装包用 install.packages(),加载用 library()。比如:
install.packages("tidyverse")
library(tidyverse)
但是,你会遇到几个常见问题:
- 依赖冲突:包 A 要求 dplyr 1.0.0,包 B 要求 dplyr 1.1.0,怎么办?
- 编译错误:有些包需要本地编译工具链,Windows 上容易报错。
- 版本回滚:新包有问题想回到旧版,怎么搞?
1.3.2 避坑指南
曾经有一次,我安装一个生物信息学包 BiocManager,结果因为 R 版本太旧,报了一堆依赖缺失。后来发现规律:CRAN 上的包通常要求 R >= 3.5,而 Bioconductor 的包经常要求 R 最新版。
我的建议:
- 优先安装预编译版:Windows 下用
install.packages("包名", type="binary"),避免从源码编译。 - 使用包管理器:
renv或packrat可以锁定项目依赖版本,像 Python 的 venv。我每个项目都初始化 renv。 - 查看依赖树:用
tools::package_dependencies()了解某个包依赖什么。
1.3.3 快速安装命令
以下是我常用的安装命令模板:
# 安装多个包
install.packages(c("dplyr", "ggplot2", "tidyr"), type="binary")
# 从GitHub安装(需要 devtools)
library(devtools)
install_github("tidyverse/ggplot2")
install.packages("路径/包名.tar.gz", repos=NULL) 手动装。1.4 R语言整体面貌
我们来看一张图,把这一章的三个核心块串起来:
1.5 我的日常开发流程
说完概念,分享一下我实际的日常。每天早上打开 RStudio,第一件事是跑一个初始化脚本:
# 项目初始化脚本
library(renv)
renv::restore()
library(tidyverse)
library(lubridate)
library(recipes) # 特征工程常用
options(scipen=999) # 取消科学计数法
这样能保证每个项目依赖完一致,不会出现“昨天还能跑今天报错”的尴尬。我曾经因为没锁版本,把模型的 R 脚本给同事,他跑出来结果不一样,查了三天发现是某个包偷偷更新了。从那以后 renv 就成了我的标配。
1.6 本章小结
这一章实际上就三件事:
- R 是什么——数据科学家的瑞士军刀。
- RStudio 怎么装——别装到中文路径,镜像设好,后面省心。
- 包怎么管——能用二进制就不用源码,能锁版本就不要裸装。