MCM520 ← 资料站首页 R 语言 · 深度入门手册 打开交互阅读器 →

R 语言 · 深度入门手册

分类:编程语言 | 难度:★★☆ 进阶 | 编号:rlang

一、这是什么(一句话用途)

统计分析与可视化的专业语言,假设检验、回归、绘图(ggplot2)极强。

二、核心定位

向量化统计语言 + 海量 CRAN 包,tidyverse 工作流做数据整理,ggplot2 做出版级图。

三、核心原理剖析

R 是为统计而生的一门语言:它的基本数据结构向量(vector)直接对应统计量,整个表达式求值天然向量化(对整列数据一次性运算),这让统计公式能"照着数学写"。其生态核心是 CRAN 上的上万个扩展包,覆盖从基础检验到前沿机器学习。ggplot2 则把"图形语法(Grammar of Graphics)"落地为代码——把一张图拆成数据、几何对象、标度、坐标系、分面等图层,像搭积木一样组合,从而能精确、可复现地生产出版级可视化。R 的短板是工程化(性能、部署)弱于通用语言,但它做"数据探索—统计建模—画图"这一段无可替代。

四、底层机制与推导

ggplot2 的图形语法:一张图被建模为

图=data+mapping(aes)+geom+scale+coord+facet \text{图}=data + mapping(aes) + geom + scale + coord + facet

其中映射 aes(x,y,color,… )aes(x,y,color,\dots) 把数据变量绑定到图形美学属性,geom(如 point/line/bar)决定几何标记,scale 控制变量到美学的转换(如数值→颜色梯度)。图层可叠加:ggplot(df,aes(x,y))+geom_point()+geom_smooth()。底层 ggplot2 把数据→一个"图形原语"表格(每个观测一行、每美学一列),再由 grid 图形系统渲染——这种"数据→原语"的范式使分面(facet)只是按变量切分数据再各自画图,逻辑一致。

向量化统计:R 的多数运算是"循环隐式化"的——y ~ x1 + x2 这类公式对象会被 model.matrix() 解析成设计矩阵 XX,再交给底层 lm.fit(X, y) 用 QR 分解求 β^=(XTX)−1XTy\hat\beta=(X^TX)^{-1}X^Ty。

五、上手步骤

  1. 装 R + RStudio
  2. 学向量/数据框(data.frame)
  3. 用 dplyr 做数据变换
  4. 用 ggplot2 绘图
  5. 用 lm/glm 等做统计建模

六、关键命令 / 语法 / 界面要点

library(ggplot2); library(dplyr)
df %>% filter(x>0) %>% summarise(m=mean(y))
ggplot(df,aes(x,y))+geom_point()+geom_smooth()
lm(y~x1+x2, data=df)   # 线性回归

七、最小可跑示例

df<-data.frame(x=1:10,y=rnorm(10)); plot(df); summary(lm(y~x,df)) 看回归系数与 p 值。

八、学习资源 / 去哪学

RStudio 官方 IDE;CRAN 包库;推荐《R for Data Science》;ggplot2 文档。

九、常见坑(避坑清单)

  • <-, = 赋值混用易错
  • 向量化优先,少用 for
  • 包要先 install.packages 再 library
  • 中文乱码设 locale/UTF-8

十、怎么算用好了

summary() 看统计量;ggplot 图层叠加;p 值 < 0.05 显著。

十一、能跑哪些建模算法

可跑:回归、聚类、时间序列、假设检验、统计建模。


本手册由「工具入门手册生成器」自动产出(深度版),与算法深度手册同套体系。

实战案例

R 语言数据可视化实战

场景:有 150 条鸢尾花数据,需探索花萼长与花宽的关系并按品种着色。
任务:用 base R 绘制散点图并加线性回归线。

完整代码(r)

# 载入数据
data(iris)

# 散点图:Species 着色
plot(iris$Sepal.Length, iris$Sepal.Width,
     col = iris$Species, pch = 19,
     xlab = "Sepal Length", ylab = "Sepal Width",
     main = "Iris 花萼散点图")

# 按品种拟合回归线
by(iris, iris$Species, function(d){
  abline(lm(Sepal.Width ~ Sepal.Length, data = d), col = d$Species[1])
})

# 图例
legend("topright", levels(iris$Species), col = 1:3, pch = 19)

运行效果

品种 回归斜率 相关性
setosa +0.80 强正
versicolor -0.36 弱负
virginica -0.10 几乎无
图例清晰区分三品种,setosa 花萼长宽强正相关。