运算符是R语言中最基础的存在,熟悉运算符的使用,是熟练使用R处理数据的基础,操作符,顾名思义,是对数据进行运算的符号,R有自己的一套操作符,实现变量的赋值,引用,运算等功能。

一,赋值符号

为变量赋值,推荐使用  var <-  expression, 把var设置为expression的值,该赋值符号有方向性。

为参数传值,使用 = ,R把等号右侧表达式的值计算出来,赋值给等号右侧的变量。

二,作用域引用符

作用域引用符:: 用于引用包中的对象。当载入多个包时,后载入的包,会把之前包中的同名函数覆盖。

dplyr::bind

通常情况下,引用包中的对象,都会省略package::,而不会产生问题。

三,运算符

R的运算符分为三类:算术运算符,逻辑运算符和位运算符。

1,算术运算符

基本算术运算符:加(+),减(-),乘(*),除(/),负数(-)

幂运算:^ 或 **

整除操作符%/%,该操作符的两侧是整数,返回的结果是整数,不足1的小数取整为0:

> 1%/%3
[1] 0
> 5%/%3
[1] 1

取模操作符 %%,该操作符的两次是整数,返回的结果是整数,求整除的余数:

> 5%%3
[1] 2

2,逻辑运算符

用于对表达式执行逻辑运算的运算符,返回的结果是布尔值:

  • 大于:>
  • 小于:<
  • 大于或等于:>=
  • 小于或等于:<=
  • 等于:==
  • 不等于:!=

用于对布尔值进行逻辑运算的运算符:

  • 与:x & y
  • 或:x | y
  • 非:! x
  • 判断是否为真:isTURE(x)
  • 判断是否为假:isFALSE(x)
  • 判断是否不等:xor(x,y), 两个操作数不等时返回TRUE,相等时返回FALSE。
  • 长格式的逻辑运算符:&&, ||

“&”和“|”作用在对象中的每一个元素上并且返回和比较次数相等长度的逻辑值;“&&”和“||”只作用在对象的第一个元素上。

对于逻辑与的运算,&& 和 &的不等:

> x <- c(T,T,F)
> y <- c(F,T,F)
> x&&y
[] FALSE
> x&y
[] FALSE TRUE FALSE

对于逻辑或的运算:

> x <- c(T,T,F)
> y <- c(F,T,F)
> x|y
[] TRUE TRUE FALSE
> x||y
[] TRUE

3,all()和any()

判断数据中是否存在TRUE值,其中all()是在全部为TURE时返回T,any是在存在任何一个TRUE时返回TRUE。

参数na.rm:是布尔类型,用于指定是否删除NA值。

all(x, na.rm=T)

4:位运算符

按照数值的bit对操作数(整数类型)进行位运算,返回的结果是整数值:

  • 按位与:bitwAnd(a, b)
  • 按位或:bitwOr(a, b)
  • 异或:bitwXor(a, b)
  • 按位取反:bitwNot(a)
  • 按位左移:bitwShiftL(a, n)
  • 按位右移:bitwShiftR(a, n)

四,运算符的向量特性

不同于其他语言,R中的运算符具有向量特性,可以对向量的元素执行向量运算:

# An example
x <- c(1:10)
x[(x>8) | (x<5)]
# yields 1 2 3 4 9 10 # How it works
x <- c(1:10)
x
1 2 3 4 5 6 7 8 9 10
x > 8
F F F F F F F F T T
x < 5
T T T T F F F F F F
x > 8 | x < 5
T T T T F F F F T T
x[c(T,T,T,T,F,F,F,F,T,T)]
1 2 3 4 9 10

1、向量化(逐个元素循环操作)
例:y=1:10; y+1; sqrt(y);
2、两个不等长的向量,短向量循环填充到长向量中
例:x=1:3; y=1:10; z=x+y
注意:当两个变量长度不是整倍数的关系,会有警告信息。

五,formula 操作符

常用于ggplot2包中,是formula函数的等价方式:

a ~ b+c

六:匹配符

匹配符 % in % 是match()函数等价方式,返回一个布尔值的向量:

x %in% table
match(x, table, nomatch = NA_integer_, incomparables = NULL)

七,通道符

用于dplyr包中,把数据集传递给下一个函数使用:

df %>% mutate()

八,其他操作符

  • 根据名字(name)获取字段值
  • [], [[]]  索引
  • :   序列

参考文档:

R Operators

R语言︱逻辑运算

R语言系列:数据的基本运算

R语言学习 第十篇:操作符的更多相关文章

  1. R语言学习 第十篇:包

    包(Package)是实现特定功能的.预先写好的代码库(library),通俗地说,包是含有函数.数据等的功能模块.R拥有大量的软件包,许多包都是由某一领域的专家编写的,但并不是所有的包都有很高的质量 ...

  2. R语言学习 第四篇:函数和流程控制

    变量用于临时存储数据,而函数用于操作数据,实现代码的重复使用.在R中,函数只是另一种数据类型的变量,可以被分配,操作,甚至把函数作为参数传递给其他函数.分支控制和循环控制,和通用编程语言的风格很相似, ...

  3. R语言学习 第八篇:常用的数据处理函数

    Basic包是R语言预装的开发包,包含了常用的数据处理函数,可以对数据进行简单地清理和转换,也可以在使用其他转换函数之前,对数据进行预处理,必须熟练掌握常用的数据处理函数,本文分享在数据处理时,经常使 ...

  4. R语言学习 第十一篇:日期和时间

    R语言的基础包中提供了三种基本类型用于处理日期和时间,Date用于处理日期,它不包括时间和时区信息:POSIXct/POSIXlt用于处理日期和时间,其中包括了日期.时间和时区信息.R内部在存储日期和 ...

  5. R语言学习 第五篇:字符串操作

    文本数据存储在字符向量中,字符向量的每个元素都是字符串,而非单独的字符.在R中,可以使用双引号,或单引号表示字符. 一,字符串中的字符数量 函数nchar()用于获得字符串中的字符数量: > s ...

  6. R语言学习 第三篇:数据框

    数据框(data.frame)是最常用的数据结构,用于存储二维表(即关系表)的数据,每一列存储的数据类型必须相同,不同数据列的数据类型可以相同,也可以不同,但是每列的行数(长度)必须相同.数据框的每列 ...

  7. R语言学习 第七篇:列表

    列表(List)是R中最复杂的数据类型,一般来说,列表是数据对象的有序集合,但是,列表的各个元素(item)的数据类型可以不同,每个元素的长度可以不同,是R中最灵活的数据类型.列表项可以是列表类型,因 ...

  8. Python 学习 第十篇 CMDB用户权限管理

    Python 学习 第十篇 CMDB用户权限管理 2016-10-10 16:29:17 标签: python 版权声明:原创作品,谢绝转载!否则将追究法律责任. 不管是什么系统,用户权限都是至关重要 ...

  9. python3.4学习笔记(十) 常用操作符,条件分支和循环实例

    python3.4学习笔记(十) 常用操作符,条件分支和循环实例 #Pyhon常用操作符 c = d = 10 d /= 8 #3.x真正的除法 print(d) #1.25 c //= 8 #用两个 ...

随机推荐

  1. 关于Class文件

    什么是Class文件 Java人对class文件肯定很熟悉了,它是Java源码编译后的产物.JVM运行时负责加载class文件,并根据class定义的执行逻辑运行.java为了将硬件底层的差异屏蔽掉, ...

  2. Android自定义Button的“款式”

    要想让你的button呈现出一种不一样的外观,一般会采取以下两种形式 采用selector里面加图片的方式 采用selector用shape进行代码控制的方式 对第一种方式而言,只需要注意好" ...

  3. 我眼中的Linux设备树(六 memory&chosen节点)

    六 memory&chosen节点根节点那一节我们说过,最简单的设备树也必须包含cpus节点和memory节点.memory节点用来描述硬件内存布局的.如果有多块内存,既可以通过多个memor ...

  4. 2015年iOS开发工程师前景分析

    "互联网+"概念的提出催生了大量互联网企业,越来越多的传统行业需要与互联网更深地渗透与融合.而在这股互联网化的浪潮中,行业却发现找不到优秀的互联网人才. 互联网企业数量持续增长,用 ...

  5. awk 详解+实例

    1. awk简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是li ...

  6. (五十五)iOS多线程之GCD

    GCD的全称为Grand Central Dispatch,翻译为大中央调度,是Apple开发的一个多线程编程解决方法. 进程和线程的概念: 正在进行中的程序被称为进程,负责程序运行的内存分配,每一个 ...

  7. myeclipse 彻底让烦人的各种验证消失 让你的开发速度飞快

    大家都知道,myeclipse的验证很吭爹,不但保存的时候要难,BUILD的时候也要验.常常为了等它而浪费了大浪的时间!!真不知道设计人员当初是怎么加进这种功能的.真心不需要. 以前都是到window ...

  8. uGUI使用代码动态添加Button.OnClick()事件(Unity3D开发之十二)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/42705885 ...

  9. anndroid 模糊引导界面

    先上两张图,后面补上代码 我们以前的写法是在需要显示模糊引导的地方,写一个布局,然后第一次使用的时候显示出来.但是这样做代码结构不清晰,所以我们有必要将这些View独立出来,写成一个自定义的View ...

  10. iOS真机调试步骤(Xcode8.0以上版本)(2015年)

    方法/步骤(转载:http://jingyan.baidu.com/article/22fe7ced20cc073002617f97.html) 获取真机调试的证书,先在本地生成获取证书的文件,找不到 ...