文章目录

R 数据结构:向量、矩阵、数据框

发布于 2026-04-19 06:25:59 · 浏览 7 次 · 评论 0 条

R 数据结构:向量、矩阵、数据框

R 语言处理数据的核心在于掌握其基础数据结构。理解并熟练使用向量、矩阵和数据框,是进行复杂数据分析的前提。以下指南将带你直接通过代码掌握这三种结构的创建与操作。


1. 向量

向量是 R 中最基本的数据结构,可以将其理解为一组有序的元素集合。所有向量中的元素必须是相同的数据类型(全是数字、全是字符或全是逻辑值)。

1.1 创建向量

使用 c() 函数(combine 的缩写)来将多个值组合成一个向量。

输入以下代码创建一个数值型向量:

numeric_vec <- c(10, 20, 30, 40)

创建一个字符型向量:

char_vec <- c("苹果", "香蕉", "橙子")

创建一个逻辑型向量:

logic_vec <- c(TRUE, FALSE, TRUE)

生成有规律的数值序列,使用冒号 : 运算符或 seq() 函数:

# 生成 1 到 5 的整数
seq_vec_1 <- 1:5

# 生成从 1 到 10,步长为 2 的序列
seq_vec_2 <- seq(from = 1, to = 10, by = 2)

1.2 向量索引与运算

访问向量中的单个元素,使用方括号 [] 并填入位置索引(R 的索引从 1 开始):

# 取出 numeric_vec 的第 2 个元素
element <- numeric_vec[2]

访问多个不连续的元素,传入一个索引向量:

# 取出第 1 个和第 3 个元素
subset <- numeric_vec[c(1, 3)]

对向量进行算术运算时,R 会自动进行向量化操作(即对每个元素分别进行计算):

# 每个元素乘以 2
result <- numeric_vec * 2

若向量中包含不同类型的数据,R 会自动将所有元素转换为同一类型(通常转换为字符型),这一过程称为强制类型转换


2. 矩阵

矩阵是二维的数组,其特点是所有元素的数据类型必须一致(例如全是数字)。它常用于数学计算或存储结构化的数值数据。

2.1 创建矩阵

使用 matrix() 函数创建矩阵。你需要指定数据向量、行数和列数。

输入以下代码创建一个 2 行 3 列的矩阵:

# 创建数据向量
data <- 1:6

# 创建矩阵:2 行 3 列
my_matrix <- matrix(data, nrow = 2, ncol = 3)

R 填充矩阵的默认顺序是按列填充(先填满第一列,再填第二列)。若想按行填充设置参数 byrow = TRUE

matrix_byrow <- matrix(data, nrow = 2, ncol = 3, byrow = TRUE)

2.2 矩阵的维度与命名

查看矩阵的维度(行数和列数),使用 dim() 函数:

dims <- dim(my_matrix)

查看行数或列数,也可以分别使用 nrow()ncol()

为了方便读取,可以行和列添加名称:

# 定义行名和列名
rownames <- c("行1", "行2")
colnames <- c("列A", "列B", "列C")

# 赋值给矩阵
dimnames(my_matrix) <- list(rownames, colnames)

2.3 矩阵索引

提取矩阵中的元素,使用 [行索引, 列索引] 的格式:

# 提取第 1 行第 2 列的元素
val <- my_matrix[1, 2]

# 提取第 1 行的所有元素(列位置留空)
row_1 <- my_matrix[1, ]

# 提取第 2 列的所有元素(行位置留空)
col_2 <- my_matrix[, 2]

3. 数据框

数据框是 R 中最常用的数据结构,类似于 Excel 表格。与矩阵不同,数据框的每一列可以是不同的数据类型(例如一列是名字,一列是年龄,一列是薪资)。

3.1 创建数据框

使用 data.frame() 函数将多个向量组合成数据框。

输入以下代码创建一个包含员工信息的数据框:

# 定义各列向量
name <- c("张三", "李四", "王五")
age <- c(25, 30, 28)
salary <- c(8000, 12000, 9500)

# 创建数据框
employee_df <- data.frame(姓名 = name, 年龄 = age, 薪资 = salary)

注意:默认情况下,data.frame() 会将字符型向量转换为因子。如果希望保持字符型,设置参数 stringsAsFactors = FALSE

3.2 查看数据结构

查看数据框的前几行,使用 head() 函数:

head(employee_df)

查看数据框的结构(各列的数据类型),使用 str() 函数:

str(employee_df)

获取数据框的维度,使用 dim()nrow()ncol(),用法与矩阵相同。

3.3 数据框操作

访问数据框中的某一列,使用 `$` 符号加上列名: ```r # 获取"薪资"列 salary_col <- employee_df$薪资


或者**使用**方括号索引,类似于矩阵:

```r
# 获取第 1 行第 2 列
cell_val <- employee_df[1, 2]

# 获取"姓名"列(返回数据框格式)
name_col_df <- employee_df["姓名"]

# 获取"姓名"列(返回向量格式)
name_col_vec <- employee_df[, "姓名"]

添加新列,直接使用 `$` 赋值即可: ```r # 添加一列"部门" employee_df$部门 <- c("技术", "销售", "技术")


### 3.4 数据框筛选

根据条件筛选行是数据分析的常见操作。**利用**逻辑判断向量进行筛选:

```r
# 筛选出年龄大于 25 的员工
subset_df <- employee_df[employee_df$年龄 > 25, ]

# 筛选出部门为"技术"的员工
tech_df <- employee_df[employee_df$部门 == "技术", ]

4. 结构选择指南

在实际分析中,选择正确的数据结构至关重要。以下流程图展示了根据数据特征选择合适结构的逻辑:

graph TD Start[开始: 分析数据特征] --> Dim{维度是
一维还是二维?} Dim -- 一维 --> Vec[选择: 向量 Vector] Dim -- 二维 --> Type{每一列的
数据类型一致吗?} Type -- 是 --> Mat[选择: 矩阵 Matrix] Type -- 否 --> DF[选择: 数据框 Data Frame] Vec --> VDesc[用于: 存储单一变量序列] Mat --> MDesc[用于: 数学计算、相同类型数据集] DF --> FDesc[用于: 表格数据、混合类型数据集]

掌握这三种结构及其操作方式,足以应对 R 语言中 80% 的基础数据处理任务。通过不断的代码练习,你将能更直观地感知它们在实际场景中的应用差异。

评论 (0)

暂无评论,快来抢沙发吧!

扫一扫,手机查看

扫描上方二维码,在手机上查看本文