R语言数据结构8:子集操作符(subsetting)-矩阵和数组

R语言数据结构8:子集操作符(subsetting)-矩阵和数组

在 R 语言中,对矩阵和数组进行子集操作时,可以通过以下三种方式实现:

  1. 使用多个向量:为每个维度提供一个一维索引,并用逗号分隔。例如,m[1:3, 2:5] 会从矩阵 m 中提取第 1 到第 3 行和第 2 到第 5 列的子集。
  2. 使用单个向量:将矩阵或数组视为一个向量进行索引。例如,vals[c(4, 15)] 会从矩阵 vals 中提取第 4 和第 15 个元素。
  3. 使用矩阵:当高维数据有名称属性时,可以使用字符串类矩阵作为索引。例如,df[["x", "y"]] 会从数据框 df 中提取名为 “x” 和 “y” 的列。

1.索引类型

数值索引

  • 正整数:mat[c(1,3),c(2,4)]#提取第1、3行,2、4列。
  • 负整数:mat[-1,]#排除第2行

逻辑索引

  • 条件筛选:mat[mat > 5]#提取所有大于5的元素)结果降维为向量)

名称索引

  • mat["row1","col2"]

2.维度控制

2.1默认降维规则

  • 若子集操作导致某维度长度为 1(如单行或单列),R 会自动将该维度简化为向量。
  • 示例:mat[1, ] 返回向量而非 1×n 矩阵。

2.2禁止降维

添加 drop = FALSE 选项:

mat[1, , drop = FALSE]  # 结果保持为矩阵
ara[1, 2, 2, drop = FALSE]  # 结果保持为数组
# 创建 4×6 矩阵
Mat <- matrix(1:24, ncol = 6)
Mat
# 提取子集
sub_mat <- Mat[2:3, c(1, 4)]  # 第 2-3 行,第 1 和 4 列 → 2×2 矩阵
sub_mat
Mat[Mat[,2] > 5, ]  # 筛选第 2 列 >5的行

A matrix: 4 × 6 of type int
15 9131721
2610141822
3711151923
4812162024
A matrix: 2 × 2 of type int
214
315
A matrix: 3 × 6 of type int
2610141822
3711151923
4812162024
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值