R 对象中的元素在部分应用场景中是不需要更改的,但在某些应用场景中,需要(甚至经常需要)修改元素中的值。
原始数据改值
可以使用索引方式对对象的原始数据进行更改,方法包括但不限于:赋值、运算、扩充等。扩充,即使用原对象中不包含的索引值进行创建,R 会自动将对象的长度扩充以包含新值:
1 | > x <- 1:5 |
扩充机制只能用于已存在维度上,尝试给向量和列表在第二维上的自动扩充会导致错误
可以使用 $
向对象中添加新项:
1 | > df <- data.frame(a=c(1,2,3),b=c("a","b","c"),c=c(TRUE,FALSE,TRUE)) |
值筛选
虽然数值索引能够提取到确定位置的数据,但不方便查找具有某些特性的数据,因此逻辑索引的优势便体现出来。
关系运算
R 中有以下七种用于判断对象间关系的关系运算符:
运算符 | 语法 | 说明 |
---|---|---|
> | a > b | 判断 a 是否大于 b |
< | a < b | 判断 a 是否小于 b |
>= | a >= b | 判断 a 是否大于或等于 b |
<= | a <= b | 判断 a 是否小于或等于 b |
== | a == b | 判断 a 是否等于 b |
!= | a != b | 判断 a 是否不等于 b |
%in% | a %in% b | 判断 a 是否被包含于 b |
判断结果为真时运算返回 TRUE ,判断结果为假时运算返回 FALSE 。
%in%
运算的结果类型与 a
一致,并且 b
并不一定是多元素对象
关系运算也可以用于非数值对象,甚至可以用于不同类型的对象,但对于不同类型的对象的关系运算,R 会尝试进行强制转换将它们变为同一类型
逻辑运算
R 中有以下六种用于判断对象间关系的逻辑(布尔)运算符:
运算符 | 语法 | 说明 |
---|---|---|
& | a & b | 判断 a 和 b 是否同时为真 |
| | a | b | 判断 a 和 b 是否至少有一个为真 |
xor | xor(a, b) | 判断 a 和 b 是否只有一个为真 |
! | !a | 判断 a 是否为假 |
any | any(a, b, c, …) | 判断 a 、b 、c 等是否至少有一个为真 |
all | all(a, b, c, …) | 判断 a 、b 、c 等是否全部为真 |
判断结果为真时运算返回 TRUE ,判断结果为假时运算返回 FALSE 。