目录

一、逻辑型向量与比较运算

二、 逻辑运算

三、逻辑运算函数


一、逻辑型向量与比较运算

        逻辑型是 R 的基本数据类型之一,只有两个值 TRUE 和 FALSE, 缺失时为 NA。
        逻辑值一般产生自比较,如
sele <- (log10(15) < 2); print(sele)

返回:

向量比较结果为逻辑型向量。如

c(1, 3, 5) > 2

返回:

(1:4) >= (4:1)

返回:

NA 比较产生 NA,如

c(1, NA, 3) > 2

返回:

NA == NA

返回:

为了判断向量每个元素是否 NA,用 is.na() 函数,如

is.na(c(1, NA, 3) > 2)

返回:

is.finite() 判断向量每个元素是否 Inf

is.finite(c(1,Inf,8))

返回:

        比较运算符包括 :< <= > >= == != %in%
        分别表示小于、小于等于、大于、大于等于、等于、不等于、属于。要注意等于 比较用了两个等号。
        %in% 是比较特殊的比较,x %in% y 的运算把向量 y 看成集合,运算结果是一个逻辑型向量,第 i 个元素的值为 x 的第 i 元素是否属于 y 的逻辑型值。如
c(1,3) %in% c(2,3,4)

返回:

c(NA,3) %in% c(2,3,4)
## [1] FALSE TRUE
c(1,3) %in% c(NA, 3, 4)
## [1] FALSE TRUE
c(NA,3) %in% c(NA, 3, 4)
## [1] TRUE TRUE
        函数 match(x, y) 起到和 x %in% y 运算类似的作用,但是其返回结果不是找到与否,而是对 x 的每个元素,找到其在 y 中首次出现的下标找不到时取缺失值,如

match(c(1, 3), c(2,3,4,3))

返回:

二、 逻辑运算

        为了表达如 “x > 0 而且 x < 1”, “x 0 或者 x 1” 之类的复合比较,需要使用逻辑运算把两个比较连接起来。逻辑运算符为 &, | 和!, 分别表示 “同时成 立”、“两者至少其一成立”、“条件的反面”。比如, age<=3 表示婴儿,sex==' 女' 表示女性,
        则 age<=3 & sex==' 女' 表示女婴,
        age<=3 | sex==' 女'表示婴儿或妇女,
        !(age<=3 | sex==' 女') 表示既非婴儿也非妇女。
为了确定运算的先后次序可以用圆括号 () 指定。
        用 xor(x, y) 表示 x 与 y 的异或运算,即值不相等时为真值,相等时为假值,有缺失值参加运算时为缺失值。
        逻辑向量与逻辑标量之间的逻辑运算,两个逻辑向量之间的逻辑运算规则遵从一般 R 向量间运算规则。
        在右运算符是缺失值时,如果左运算符能够确定结果真假,可以得到非缺失的结果。例如,TRUE | NA 为 TRUE, FALSE & NA 为 FALSE。
        不能确定结果时返回 NA,比如,TRUE & NA 为 NA, FALSE | NA 为 NA。

        &&|| 分别为短路的标量逻辑与和短路的标量逻辑或,仅对两个标量进行运算,如果有向量也仅使用第一个元素。一般用在 if 语句、while 语句中,且只要第一个比较已经决定最终结果就不计算第二个比较。例如
if(TRUE || sqrt(-1)>0) next

由于其中的 sqrt(-1) 部分不会执行,结果返回:

三、逻辑运算函数

        因为 R 中比较与逻辑运算都支持向量之间、向量与标量之间的运算,所以在需要一个标量结果时要特别注意,后面讲到的 if 结构、while 结构都需要逻辑标量而且不能是缺失值。这时,应该对缺失值结果单独考虑
        若 cond 是逻辑向量,用 all(cond) 测试 cond 的所有元素为真;用 any(cond) 测试 cond 至少一个元素为真。cond 中允许有缺失值,结果可能为缺失值。如
c(1, NA, 3) > 2
all(c(1, NA, 3) > 2)
any(c(1, NA, 3) > 2)
all(NA)
any(NA)

返回:

函数 which() 返回真值对应的所有下标,如

which(c(FALSE, TRUE, TRUE, FALSE, NA))
which((11:15) > 12)

返回:

        函数 identical(x,y) 比较两个 R 对象 x 与 y 的内容是否完全相同,结果只会取标量 TRUE 与 FALSE 两种。如
identical(c(1,2,3), c(1,2,NA))
identical(c(1L,2L,3L), c(1,2,3))

因为前一向量是整数型,后一向量是实数型,结果返回:

        函数 all.equal()identical() 类似,但是在比较数值型时不区分整数型与实数型,而且相同时返回标量 TRUE,但是不同时会返回一个说明有何不同的字符串。如
all.equal(c(1,2,3), c(1,2,NA))
all.equal(c(1L,2L,3L), c(1,2,3))

返回:

函数 duplicated() 返回每个元素是否为重复值的结果,如:

duplicated(c(1,2,1,3,NA,4,NA))

返回:

用函数 unique() 可以返回去掉重复值的结果,如

unique(c(1,2,1,3,NA,4,NA))

返回:

R语言基础入门(4)之数据类型与相应运算2相关推荐

  1. R语言基础入门(全)

    R 是门语言,也是个环境.个人认为R有点像matlab. R自带多种统计学及数字分析功能.R的功能也可以通过安装包(Packages,用户撰写的功能)增强,个人感觉这个就是插件.因为S的血缘,R比其他 ...

  2. R语言基础入门(学习笔记通俗易懂版)

    文章目录 R语言预备知识 获取工作目录 设置工作目录 注释 变量名的命名 赋值 变量的显示 查看与清除变量 函数帮助文档查询 函数 安装R包 文件的读取 文件的输出 软件的退出与保存 R语言语法 向量 ...

  3. R语言基础入门(3)之数据类型与相应运算1

    目录 一.常量与变量 1.常量 2.变量 二.数据类型 三.数值型向量 3.1 c() 函数 3.2 length(x) 3.3 numeric() 四.向量运算 1.标量和标量运算 2.向量与标量运 ...

  4. R语言基础入门(7)之数据类型的性质

    目录 1.存储模式与基本类型 2.类属 3.类型转换 4.属性 5.str() 函数 6.关于赋值 1.存储模式与基本类型 R语言中根据类型可以将数据划分为: 数值型(numeric) 整数型(int ...

  5. R语言 ---- 基础入门

    (一)向量 赋值: > x <- c(1,2,3,4,5) # 使用<-赋值,c表示连接 > x [1] 1 2 3 4 5> y <- c(x,6,7,8) &g ...

  6. R语言基础入门(10)之矩阵和数组

    目录 1.矩阵 创建矩阵 查看矩阵的行与列数 转置 2.矩阵子集 3.矩阵行列命名 4.命名后取子集 5.逻辑下标取子集 6.正整数向量的矩阵取子集 7.返回对角线向量 8.创建单位矩阵 9.cbin ...

  7. R语言基础入门(9)之因子类型

    目录 1.因子 2.table() 函数 3.tapply() 函数 4.forcats 包的因子函数 练习 1.因子         R 中用因子代表数据中分类变量, 如性别.省份.职业.有序因子代 ...

  8. R语言基础入门(6)之向量下标和子集

    目录 1.正整数下标 2.负整数下标 3.空下标与零下标 4.下标超界 5.逻辑下标 6. which().which.min().which.max() 函数 7. 元素名 8.用 R 向量下标作映 ...

  9. R语言基础入门,看这里!

最新文章

  1. javascript加载顺序问题(二)
  2. 100c之50:到底谁在说谎
  3. js进阶 12-1 jquery的鼠标事件有哪些
  4. wukong引擎源码分析之索引——part 3 文档评分 无非就是将docid对应的fields信息存储起来,为搜索结果rank评分用...
  5. python保留字分支结构_Python基础语法----缩进、注释、命名与保留字、数据类型、分支语句、函数...
  6. Linux链接库二(动态库,静态库,库命名规则,建立个没有版本号的软连接文件)...
  7. redis介绍以及使用 ppt_光纤收发器的工作原理以及使用方法介绍
  8. fga 例子 oracle,利用Oracle FGA实现审计
  9. 在Spring Boot测试中使用Testcontainer进行数据库集成测试
  10. leetcode 删除排序数组中的重复项
  11. 学习使用c++编写opencv的一些记录
  12. php ajax post请求数据变形,php-在AJAX调用中读取POST数据
  13. Nova 操作汇总(限 libvirt 虚机) [Nova Operations Summary]
  14. linux怎样压缩卷分区,怎么调整磁盘分区容量大小
  15. ai人工智能最新相关消息_我如何了解最新的AI研究
  16. Mysql的一揽子方案用法
  17. 14.荔枝派 zero(全志V3S)-驱动OV2640拍照、录制视频
  18. 微信小程序入门八头像上传
  19. 浅析SkipList跳跃表原理及代码实现
  20. ios error90096 错误

热门文章

  1. Win11系统使用Excel表格的时候很卡怎么办
  2. Win10系统开机任务栏一直转圈怎么解决
  3. springboot日志的实现方式(两种log4j2.properties和log4j2.yml)
  4. mysql取消主从配置_mysql主从配置
  5. java按钮触发另一个页面_前端跨页面通信,你知道哪些方法?
  6. java jsp session_JSP中Session的使用
  7. mysql资质_MySQL语句与Java代码实现按需过滤企业员工的资质证书
  8. AndroidJava List与equals的微妙关系,小心掉坑里
  9. JS去除字符串去除最后的逗号
  10. 云麦体脂秤华为体脂秤_华为、小米和有品体脂秤哪个品牌好?三款智能体脂秤横评结果排行...