Menu
CoddyTech

R 语言速查表

最后更新

Hello World 与赋值

R 惯用的赋值运算符是 <-(= 运算符也可以用)。

操作语法
输出一个值print("Hello, World!")
自动输出(控制台)"Hello, World!"
拼接并输出cat("Hi", name, "\n")
赋值(惯用写法)x <- 5
赋值(同样有效)x = 5
向右赋值5 -> x
注释# this is a comment
运行脚本Rscript app.R

数据类型与向量

向量是 R 最基本的数据结构,即使是单个值,也是长度为 1 的向量。

操作语法
数值向量v <- c(1, 2, 3)
字符向量s <- c("a", "b")
逻辑向量b <- c(TRUE, FALSE)
整数序列1:10
带步长的序列seq(0, 1, by = 0.1)
重复值rep(0, times = 5)
基本类型numeric, character, logical, integer, complex
检查或转换类型class(x), as.numeric("42")

向量运算

运算是向量化的,会逐元素执行;索引从 1 开始。

操作语法
访问元素(从 1 开始)v[1]
切取一段范围v[2:4]
逻辑筛选v[v > 2]
去掉一个元素v[-1]
逐元素运算v * 2, v1 + v2
长度length(v)
常用汇总函数sum(v), mean(v), max(v)
排序、反转sort(v), rev(v)
命名向量c(a = 1, b = 2)

数据框

数据框是由列组成的表,每一列都是等长的向量。

操作语法
创建数据框df <- data.frame(name = c("Ada"), age = c(30))
开头和末尾几行head(df), tail(df)
维度nrow(df), ncol(df), dim(df)
列名names(df), colnames(df)
选择一列df$age 或 df[["age"]]
选择行或列df[1, ], df[, "age"]
筛选行df[df$age > 18, ]
添加一列df$adult <- df$age >= 18
统计摘要summary(df)
查看结构str(df)

因子与列表

因子用来存放分类数据,列表可以容纳不同类型的元素。

操作语法
创建因子f <- factor(c("low", "high"))
因子水平levels(f)
有序因子factor(x, ordered = TRUE)
按水平计数table(f)
创建列表l <- list(name = "Ada", scores = c(1, 2))
按名称访问l$name 或 l[["name"]]
按位置访问l[[1]]
子列表(仍是列表)l[1]
长度、名称length(l), names(l)

流程控制

条件写在圆括号里,代码块写在花括号里。

操作语法
if、else if、elseif (x > 0) { ... } else if (x < 0) { ... } else { ... }
向量化的 if-elseifelse(v > 0, "pos", "neg")
for 循环for (i in 1:10) { ... }
遍历向量的 for 循环for (x in v) { ... }
while 循环while (x < 100) { ... }
repeat 配合 breakrepeat { if (done) break }
switchswitch(key, a = 1, b = 2)
逻辑运算符&&, ||, !(标量);&, |(向量)

函数

函数是一等公民,最后一个被求值的表达式就是返回值。

操作语法
定义函数add <- function(a, b) { a + b }
显式返回return(a + b)
默认参数greet <- function(name = "World") { ... }
可变参数f <- function(...) { sum(...) }
按名称传参box(w = 2, h = 3)
匿名函数function(x) x * 2
匿名函数(简写)\(x) x * 2
传给高阶函数sapply(1:3, function(x) x^2)

apply 函数族

不用写显式循环,就能把函数应用到数据上。

函数作用
apply(m, 1, sum)按矩阵的行(1)或列(2)应用函数
sapply(v, f)对向量逐项应用,结果简化为向量或矩阵
lapply(v, f)对向量逐项应用,总是返回列表
vapply(v, f, numeric(1))类似 sapply,但会检查返回类型
mapply(f, a, b)同时对多个向量逐项应用
tapply(x, group, mean)按组应用函数
Map(f, a, b)多变量版的 apply,返回列表
Reduce(+, v)用二元函数把向量归约成一个值

常用数据处理与统计函数

用于汇总和整理数据的常用基础函数。

函数作用
mean(v) / median(v)平均值、中位数
sd(v) / var(v)标准差、方差
min(v) / max(v) / range(v)最小值、最大值、两者都要
quantile(v)分位数(例如四分位数)
table(x)统计每个值出现的次数
unique(v) / duplicated(v)去重后的值、是否重复的标记
is.na(v) / na.omit(df)查找或删除缺失值
aggregate(y ~ g, df, mean)按组 g 汇总 y
order(v)排序用的索引顺序
cor(x, y)两个向量之间的相关系数

最常用的 R 语法,全都在这一页。这份 R 语言速查表是核心语言的快速参考:赋值和数据类型、向量和向量运算、数据框、因子和列表、流程控制、函数,以及 R 数据分析中随处可见的 apply 函数族。

这里的内容都是基础 R(base R),装好 R 就能运行,不需要额外的包。需要什么就复制什么,也可以在 R 在线编辑器里直接运行每个代码片段,无需任何配置。

R 语言速查表常见问题

这份 R 语言速查表免费吗?

免费。这份 R 语言速查表完全免费,无需注册。把它加入书签,需要查向量运算、数据框方法或统计函数时随时回来看。

R 的向量真的从 1 开始索引吗?
是的。和大多数编程语言不同,R 的索引从 1 开始,所以 v[1] 返回第一个元素,v[length(v)] 返回最后一个元素。负数索引有特殊含义:v[-1] 表示去掉第一个元素,而不是从末尾倒数。向量、列表和数据框都遵循这种从 1 开始的规则。
R 语言中的数据框是什么?
数据框是 R 的表格类型:由多列组成,每一列都是等长的向量,不同的列可以存放不同的类型(数字、文本、因子)。它是存放数据集的标准结构,行是观测,列是变量。用 df[rows, columns] 索引,用 df$name 选择一列,用 str(df) 或 summary(df) 查看内容。
可以在线练习 R 语言吗?

可以。打开 R 在线编辑器,就能在浏览器里运行这份速查表中的任意代码片段,不用安装 R 或 RStudio。想系统学习时,Coddy 的免费交互式 R 课程会一步步带你从向量和数据框学到 apply 函数族和统计分析。

这份速查表适合初学者吗?

适合。内容从最常用的主题(赋值、向量、数据框)一直排到进阶主题(apply 函数族和统计函数),第一天就能用上前面几部分,再慢慢掌握后面的内容。

Coddy 编程语言插图

在 Coddy 学习 R

开始