R编程教程:矩阵与数据框基础概念解析
矩阵与数据框概述
在R语言中,矩阵(Matrix)和数据框(Data Frame)是两种非常重要的"矩形"数据结构,它们都以行和列的形式存储表格数据。这两种结构虽然看起来相似,但在数据存储和处理方式上有着本质区别。
核心区别:
- 矩阵只能包含单一数据类型(如全部是数值或全部是字符)
- 数据框可以包含多种数据类型(如某些列是数值,某些列是字符)
矩阵的创建与操作
从向量到矩阵
矩阵本质上是一个带有维度属性的向量。让我们通过实际操作来理解这个概念:
# 创建1到20的向量
my_vector <- 1:20
# 查看向量维度(结果为NULL,因为向量没有维度属性)
dim(my_vector)
# 查看向量长度
length(my_vector)
# 为向量添加维度属性,将其转换为4行5列的矩阵
dim(my_vector) <- c(4, 5)
使用matrix()函数创建矩阵
R提供了专门的matrix()函数来创建矩阵,这是更直接的方法:
# 查看matrix函数的帮助文档
?matrix
# 使用matrix函数创建4行5列的矩阵
my_matrix2 <- matrix(1:20, nrow=4, ncol=5)
# 验证两种方法创建的矩阵是否相同
identical(my_vector, my_matrix2)
数据框的创建与操作
为什么需要数据框
当我们尝试将字符向量与数值矩阵组合时,会遇到类型强制转换的问题:
# 创建患者姓名向量
patients <- c("Bill", "Gina", "Kelly", "Sean")
# 尝试将姓名与矩阵合并
cbind(patients, my_matrix) # 所有数据都被转换为字符类型
这是因为矩阵只能包含单一数据类型,R会自动将数值强制转换为字符类型以保持一致性。
创建数据框
数据框解决了这个问题,允许不同列有不同的数据类型:
# 创建数据框
my_data <- data.frame(patients, my_matrix)
# 查看数据框内容
my_data
# 查看数据框类型
class(my_data) # 返回"data.frame"
为数据框添加列名
我们可以为数据框的列指定有意义的名称:
# 创建列名向量
cnames <- c("patient", "age", "weight", "bp", "rating", "test")
# 为数据框添加列名
colnames(my_data) <- cnames
# 查看最终结果
my_data
实际应用场景
假设我们有一个临床实验数据集:
- 每行代表一个患者
- 每列代表一个测量指标
- 第一列是患者姓名(字符型)
- 其他列是各种测量结果(数值型)
这种混合数据类型的情况正是数据框大显身手的地方,而矩阵则更适合处理同质化的数值计算。
总结
通过本教程,我们学习了:
- 矩阵是带有维度属性的向量,只能包含单一数据类型
- 数据框是更灵活的结构,可以包含混合数据类型
- 使用dim()函数可以设置或获取对象的维度
- 使用cbind()可以按列合并对象
- 数据框是处理实际数据更常用的结构
掌握矩阵和数据框的区别与用法是R编程的基础,后续我们将学习更多关于数据框的高级操作技巧。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考