找回密码
 注册
查看: 15680|回复: 2

R语言中运算符详细说明

[复制链接]
发表于 2011-1-22 18:20:19 | 显示全部楼层 |阅读模式
我们在前面已经看到了R10中三种主要类型的运算符。下面是运算符的列
表:
运算符
数学运算比较运算逻辑运算
+ 加法< 小于! x 逻辑非
- 减法> 大于x & y 逻辑与
* 乘法<= 小于或等于x && y 同上
/ 除法>= 大于或等于x j y 逻辑或
^ 乘方== 等于x jj y 同上
%% 模!= 不等于xor(x, y) 异或
%/% 整除
数学运算符和比较运算符作用于两个元素上(x + y, a < b);数学运算
符不只是作用于数值型或复数型变量,也可以作用在逻辑型变量上;在后一
种情况中,逻辑型变量被强制转换为数值型。比较运算符可以适用于任何类
型:结果是返回一个或几个逻辑型变量。
逻辑型运算符适用于一个(对“!”运算符)或两个逻辑型对象(其它运
算符),并且返回一个(或几个)逻辑性变量。运算符“逻辑与”和“逻
辑或”存在两种形式:“&”和“j”作用在对象中的每一个元素上并且返回
和比较次数相等长度的逻辑值;“&&”和“jj”只作用在对象的第一个元素
上。
对于0 < x < 1这种类型的不等式必须使用算子“逻辑与”,这个不等式
将被改写成0 <x & x < 1。表达式0 < x < 1是合法的,但是不会返回所预
期的结果:因为两个运算符相同,它们将从左至右连续执行。首先完成0 <
x并返回一个逻辑变量,它将与1比较(TRUE或者FALSE< 1):在这种情形下,
这个逻辑变量被强制转换为数值(1或0 < 1)。
> x <- 0.5
> 0 < x < 1
[1] FALSE
比较运算符作用在两个被比较对象的每个元素上(如果需要,将循环使
用最短的变量),从而返回一个同样大小的对象。为了“整体”比较两个对
象,可以使用两个函数:identical和all.equal
> x <- 1:3; y <- 1:3
> x == y
[1] TRUE TRUE TRUE
> identical(x, y)
[1] TRUE
> all.equal(x, y)
[1] TRUE
identical比较数据的内在关系,如果对象是严格相同的返回TRUE,否
则返回FALSE。all.equal用来判断两个对象是否“近似相等”,返回结果
为TRUE或者对二者差异的描述。后一个函数在比较数值型变量时考虑到了计
算过程中的近似。在计算机中数值型变量的比较有时很是令人惊奇。
> 0.9 == (1 - 0.1)
[1] TRUE
> identical(0.9, 1 - 0.1)
[1] TRUE
> all.equal(0.9, 1 - 0.1)
[1] TRUE
> 0.9 == (1.1 - 0.2)
[1] FALSE
> identical(0.9, 1.1 - 0.2)
[1] FALSE
> all.equal(0.9, 1.1 - 0.2)
[1] TRUE
> all.equal(0.9, 1.1 - 0.2, tolerance = 1e-16)
[1] "Mean relative difference: 1.233581e-16"
回复

使用道具 举报

发表于 2012-10-9 13:57:29 | 显示全部楼层
Why there is difference between 1.1-0.2 and 0.9 ?
回复 支持 反对

使用道具 举报

发表于 2012-10-14 08:11:15 | 显示全部楼层
二进制表示的缘故嘛,你以为计算机和你想得会完全一样啊
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-22 12:18 , Processed in 0.022333 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表