
有用的方法
|
381
100 %+-% (1.96 * 15)
#> [1] 70.6 129.4
注意,当我们定义二元运算符时,需要使用引用运算符,而在使用时则不需要引用。
定义自己的运算符的乐趣在于,你可以将常用的操作包含在简洁的语法中。如果你的应用
程序经常连接两个字符串而没有插入空格,那么你可能为此目的定义一个二元连接运算符:
'%+%' <- function(s1, s2)
paste(s1, s2, sep = "")
"Hello" %+% "World"
#> [1] "HelloWorld"
"limit=" %+% round(qnorm(1 - 0.05 / 2), 2)
#> [1] "limit=1.96"
但是,定义自己的运算符的一个危险是,代码不能移植到其他环境。需要把定义运算符
的代码一起放到应用运算符的地方;否则,R 将产生错误信息。
所有用户定义的运算符具有相同的优先级,并在表 2-1 中统一列为 %
any
%。它们的优先级
相当高:高于乘法和除法,但低于幂和数列创建。因此,这样高优先级的一个结果是,很
容易造成误解。如果在上面的 %+-% 示例中省略了括号,我们会得到一个意想不到的结果:
100 %+-% 1.96 * 15
#> [1] 1471 1529
R 将表达式解释为 (100 %+-% 1.96) * 15。
12.17.4 另请参阅
有关运算符优先级的更多信息,请参阅 2.11 节;有关如何定义函数,请参见 15.3 节。
12.18 不显示 R 启动消息
12.18.1 ...