R语言中缀操作符教程

本文介绍R语言中的中缀操作符使用方法及自定义技巧,包括常见的算术操作符和时间计算应用。

本文我们介绍R中缀操作符,包括如何使用以及自定义中缀操作符。

R大多数操作符属于二元操作符,因此属于中缀操作符,操作符在两个操作数之间。实际上底层是函数调用。

举例,a+b 表达式调用+()函数,其参数为a,b , 即 +(a,b)。注意+上的重音符号表示函数名称包含特殊符号。

R 中缀符号对应函数

下面代码展示常规操作,分别使用中缀操作符以及对应函数方式。

5+3
# [1] 8
`+`(5,3)
# [1] 8

5-3
# [1] 2
`-`(5,3)
# [1] 2

5*3-1
# [1] 14
`-`(`*`(5,3),1)
# [1] 14

自定义中缀符号

在R中可以自定义中缀操作符,其函数名需要是使用%包裹。下面通过示例来说明。

使用该函数可以才有中缀符号,也可以使用函数调用:

`%divisible%` <- function(x,y){
  if (x%%y ==0) return (TRUE)
  else          return (FALSE)
}

10 %divisible% 3
# [1] FALSE
10 %divisible% 2
# [1] TRUE
`%divisible%`(10,5)
# [1] TRUE

需要提醒的是自定义中缀符号需要以%开头和结尾,并使用重音符号`包裹以转义特殊符号。

常用的中缀符号

符号说明备注
%%取余数
%/%整除
%*%矩阵乘积
%o%矩阵外积
%x%克罗内克积
%in%匹配操作
%^%矩阵指数引用包 library(expm)

lubridate 包的中缀符号应用

下面示例计算不同组的平均运行时间(以周为单位)。

首先定义开始时间和结束时间,然后利用%--%符号计算两者时间间隔:

library(lubridate)

start <- c("2012-08-21", "2012-09-01", "2012-08-15", "2012-09-18")
end <- c("2012-09-16", "2012-09-06", "2012-08-22", "2012-10-11")
elapsed.time <- start %--% end
elapsed.time 

elapsed.time 返回的是Interval类型,表示时间间隔或范围,我们可以使用as.duration 函数转换为以秒为单位的时间,然后再以周为单位表示为人易读的方式:

options(digits = 1)

as.duration(elapsed.time) / dweeks(1)
# [1] 3.7 0.7 1.0 3.3

as.duration(elapsed.time) / dhours(1)
## [1] 624 120 168 552

as.duration(elapsed.time) / ddays(1)
## [1] 26  5  7 23

as.duration(elapsed.time) / dminutes(1)
## [1] 37440  7200 10080 33120

as.duration(elapsed.time) / dyears(1)
## [1] 0.07 0.01 0.02 0.06
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值