%/%和%%是什么意思?

时间:2014-07-11 21:08:11

标签: r dplyr

我最近看过这样的代码:

library(dplyr)
mtcars %.% mutate(carb_10 =  carb %/% 10)

这就是....

mtcars %.% mutate(carb_10 =  carb %% 10)

有人可以解释上面代码中%/%和%%的作用吗?

4 个答案:

答案 0 :(得分:6)

来自?"%%"帮助页面

  

%%表示x mod y,%/%表示整数除法。保证x == (x %% y) + y * ( x %/% y )(最多为舍入误差),除非y == 0,其中%%的结果是NA_integer_或NaN(取决于参数的类型)。

答案 1 :(得分:5)

操作员可以使用帮助,但您必须先将它们转义,否则它们将按字面解释。

例如

?`%%`

打开“算术”帮助页面,其中包括%%%/%以及+*等的帮助。您还可以访问此页面这样:

?Arithmetic

您的IDE可能不知道需要引用运营商。事实上,帮助是“智能的”,并且可以提供有关多次调度调用的帮助,其中参数类型会影响实际执行的函数:

如此简单地引用所有文本并将其传递给帮助将无法正常工作。


Backquoting的Offtopic

返回引用操作符返回一个标准函数(不是字符串),这在其他情况下很有用,例如,找出它是如何工作的:

> `%\%`
function (e1, e2)  .Primitive("%%")

分配;

> add <- `%+%`
> `%MYADD%` <- add
> 1 %MYADD% 2
[1] 3

或者将它提供给更高阶的函数,例如apply,Map,Reduce,do.call等。例如,这是我们如何重写'sum':

> Reduce(`+`,1:10,0)
[1] 55

答案 2 :(得分:1)

在 R 中:

  • %% 是模运算符
  • 示例:5 %% 3 将等于 2,因为它是 5 除以 3 得到的余数

在python中,你可以简单地使用%

  • 5% 3

在 R 中:

  • %/% 是整数除法运算符
  • 示例:5 %/% 3 将等于 1,因为它是 5 除以 3 得到的商

在python中,你可以简单地使用//

  • 5 // 3

答案 3 :(得分:-2)

b <- c(1,2,3,4,5,6,7,8,9,10,11,12);
b[b %% 3 == 1]  
#1/3=0...1 ; 4/3=1...1 ;7/3=2...1 ; ANS:1,4,7,10 ,remainder=1;
b[b %/% 3 == 1] 
#3/3=1...0 ; 4/3=1...1 ;5/3=1...2 ; ANS:1,4,7,10 ,quotient =1 ;