R语言逻辑型运算的实现

 更新时间:2022年03月04日 10:25:23   作者:洋洋菜鸟  
本文主要介绍了R语言逻辑型运算,逻辑型是 R 的基本数据类型之一,只有两个值 TRUE 和 FALSE, 缺失时为 NA,具有一定的参考价值,感兴趣的可以了解一下

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

        逻辑型是 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语言逻辑型运算的实现的文章就介绍到这了,更多相关R语言逻辑型运算内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • R语言基础数据类型的具体使用

    R语言基础数据类型的具体使用

    本文主要介绍了R语言基础数据类型的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • R语言 如何删除指定变量或对象

    R语言 如何删除指定变量或对象

    这篇文章主要介绍了R语言删除指定变量或对象的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • R语言gsub替换字符工具的具体使用

    R语言gsub替换字符工具的具体使用

    这篇文章主要介绍了R语言gsub替换字符工具的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • R语言绘制维恩图ggvenn示例详解

    R语言绘制维恩图ggvenn示例详解

    这篇文章主要为大家介绍了R语言绘制维恩图ggvenn示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • R语言绘图布局实例讲解

    R语言绘图布局实例讲解

    这篇文章主要介绍了R语言绘图布局实例讲解,文中实例讲解的很清晰,有感兴趣的同学可以研究下
    2021-03-03
  • R语言如何将大型Excel文件转为dta格式详解

    R语言如何将大型Excel文件转为dta格式详解

    这篇文章主要给大家介绍了关于R语言如何将大型Excel文件转为dta格式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • R语言-如何定义数据框的列名

    R语言-如何定义数据框的列名

    这篇文章主要介绍了R语言-定义数据框的列名操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • R语言表达式知识点总结

    R语言表达式知识点总结

    在本篇文章里小编给大家整理了一篇关于R语言表达式知识点总结内容,有兴趣的朋友们可以学习参考下。
    2021-03-03
  • R语言对数据库进行操作的实例详解

    R语言对数据库进行操作的实例详解

    在本篇文章里小编给大家分享的是一篇关于R语言对数据库进行操作的实例详解内容,有兴趣的朋友们跟着学习下吧。
    2021-05-05
  • R语言中向量的加法和乘法运算

    R语言中向量的加法和乘法运算

    这篇文章主要介绍了R语言中向量的加法和乘法运算,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04

最新评论