R编程教程:矩阵与数据框基础概念解析

R编程教程:矩阵与数据框基础概念解析

swirl_courses :mortar_board: A collection of interactive courses for the swirl R package. swirl_courses 项目地址: https://gitcode.com/gh_mirrors/sw/swirl_courses

矩阵与数据框概述

在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

实际应用场景

假设我们有一个临床实验数据集:

  • 每行代表一个患者
  • 每列代表一个测量指标
  • 第一列是患者姓名(字符型)
  • 其他列是各种测量结果(数值型)

这种混合数据类型的情况正是数据框大显身手的地方,而矩阵则更适合处理同质化的数值计算。

总结

通过本教程,我们学习了:

  1. 矩阵是带有维度属性的向量,只能包含单一数据类型
  2. 数据框是更灵活的结构,可以包含混合数据类型
  3. 使用dim()函数可以设置或获取对象的维度
  4. 使用cbind()可以按列合并对象
  5. 数据框是处理实际数据更常用的结构

掌握矩阵和数据框的区别与用法是R编程的基础,后续我们将学习更多关于数据框的高级操作技巧。

swirl_courses :mortar_board: A collection of interactive courses for the swirl R package. swirl_courses 项目地址: https://gitcode.com/gh_mirrors/sw/swirl_courses

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

巫文钧Jill

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值