前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【R语言经典实例7】运算符优先级问题

【R语言经典实例7】运算符优先级问题

作者头像
统计学家
发布2019-04-10 10:28:34
2.3K0
发布2019-04-10 10:28:34
举报

问题

R软件输出结果有误,你希望了解问题是否由运算符的优先级所导致的。

解决方

所有的运算符显示在表2-1中,并以最高优先级至最低优先级的顺序排列。相同优先级的运算符,除特指外皆由从左至右的顺序进行运算。

表2-1:运算符优先级 运算符含义参考 [ [[索引方法2.9 :: :::使用名称访问变量 $ @元素提取、位置提取 ^指数形式(从右到左) - +元素的负、正 :创建数列方法2.7,7.14 %any%特殊运算符讨论 * /乘、除讨论 + -加、减 == != < > <= >=比较运算符方法2.8 !逻辑取反 & && 逻辑“与”、 短路“与” 表2-1:运算符优先级(续) 运算符含义参考 | ||逻辑 “或”、 短路“或” ~公式方法11.1 -> ->>向右赋值方法2.2 = 赋值(从右向左)方法2.2 <- <<- 赋值(从右向左)方法2.2 ? 帮助 方法1.7

讨论

用户在R中搞错运算符的优先级是经常遇到的问题。我经常会犯这样的错误,例如我会不假思索地认为表达式0:n-1会生成从0~n-1的数列,但事实并非如此: > n <-10 > 0:n-1 [1] -1 0 1 2 3 4 5 6 7 8 9

该表达式生成-1~n-1的数列,因为R软件将上式理解为(0:n)-1。

你可能不熟悉表2-1中的符号%any%,R中用两个百分号夹带一个符号的形式(%...%)表示一个二元运算符。R中预定义的二元运算符的含义如下: %% 取模 %/% 整除 %*% 矩阵乘积 %in% 右侧变量中包含左侧变量时,为TRUE;否则,为FALSE。

你可以通过%...%记号来定义新的二元运算符,参见方法12.19。此种运算符都具有相同的运算优先级。

求土豪打赏红包

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器学习与统计学 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档