7.R向量下标和子集

本文详细介绍了R语言中向量的下标和子集操作,包括正整数、负整数、空下标、下标超界、逻辑下标、which()函数、元素名、映射和集合运算等。通过实例展示了如何选取和修改向量的特定元素,以及如何进行逻辑判断和集合操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


(学习资料参考北京大学李东风老师《R语言教程》)

7 R向量下标和子集

在R中下标与子集是极为强大的功能, 需要一些练习才能熟练掌握, 许多其它语言中需要多个语句才能完成的工作在R中都可以简单地通过下标和子集来完成。

7.1 正整数下标

对向量x, 在后面加方括号和下标可以访问向量的元素和子集。

x <- c(1, 4, 6.25)x[2] 取出第二个元素; x[2] <- 99 修改第二个元素。 x[c(1,3)] 取出第1、3号元素; x[c(1,3)] <- c(11, 13) 修改第1、3号元素。 下标可重复。 例如:

  1. 取出第二个元素:
x <- c(1, 4, 6.25)
x[2]

输出结果如下:

  1. 修改第2个元素:
x[2] <- 99; x

输出结果如下:
在这里插入图片描述
将原来x为c(1, 4, 6.25) 改成了 c(1, 99, 6.25)

  1. 取出1、3个元素:
x[c(1,3)]

输出结果如下:
在这里插入图片描述

7.2 负整数下标

负下标表示扣除相应的元素后的子集,如:

  1. 扣除第2个元素后的子集:
x <- c(1,4,6.25)
x[-2]

输出结果如下:
在这里插入图片描述

  1. 扣除1、3个元素后的子集:
x[-c(1,3)]

输出结果如下:
在这里插入图片描述
注意: 负整数下标不能与正整数下标同时用来从某一向量中取子集, 比如,x[c(1,-2)]没有意义。

7.3 空下标与零下标

  1. x[] 表示取 x 的全部元素作为子集。 这与 x 本身不同,比如:
x <- c(1,4,6.25)
x[] <- 999
x

输出结果如下(将x的全部元素都替换成999):
在这里插入图片描述

  1. x[0] 是一种少见的做法, 结果返回类型相同、长度为零的向量, 如 numeric(0) 。 相当于空集。当0与正整数下标一起使用时会被忽略。 当0与负整数下标一起使用时也会被忽略。

7.4 下标超界

设向量 x 长度为 n , 则使用正整数下标时下标应在 {1,2,3,…,n} 中取值,如果使用大于 n 的下标, 读取时返回缺失值,并不出错。 给超出的下标元素赋值, 则向量自动变长, 中间没有赋值的元素为缺失值。 例如:

x <- c(1,4,6.25)
x[5]

输出结果如下:
在这里插入图片描述
再比如:

x <- c(1,4,6.25)
x[5] <- 9
x

输出结果如下(由于原来的 x 只有3个值,所以第4个值为NA,第5个取新值9):
在这里插入图片描述
虽然R的语法对下标超界不视作错误, 但是这样的做法往往来自不良的程序思路, 而且对程序效率有影响, 所以实际编程中应避免下标超界。

7.5 逻辑下标

下标可以是与向量等长的逻辑表达式, 一般是关于本向量或者与本向量等长的其它向量的比较结果,如:

  1. 取出x的大于3的元素组成的子集
x <- c(1,
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值