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

luc*_*ano -5 r dplyr

我最近看过这样的代码:

library(dplyr)
mtcars %.% mutate(carb_10 =  carb %/% 10)
Run Code Online (Sandbox Code Playgroud)

还有这个....

mtcars %.% mutate(carb_10 =  carb %% 10)
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释上面的代码中%/%和%%做了什么?

kus*_*hah 14

在R中:

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

在Python中,你可以通过简单地使用:%来做到这一点

  • 5%3

在R中:

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

在 Python 中,您只需使用以下命令即可做到这一点://

  • 5 // 3


MrF*_*ick 7

?"%%"帮助页面

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


Ale*_*own 5

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

例如

?`%%`
Run Code Online (Sandbox Code Playgroud)

打开"算术"帮助页面,其中包括帮助两个%%%/%以及+,*等您也可以访问该网页是这样的:

?Arithmetic
Run Code Online (Sandbox Code Playgroud)

您的IDE可能不知道需要引用运算符.实际上,帮助是"智能"的,并且可以在多次调度的调用上提供帮助,其中参数类型会影响实际执行的函数:

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


Backquoting的Offtopic

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

> `%\%`
function (e1, e2)  .Primitive("%%")
Run Code Online (Sandbox Code Playgroud)

分配;

> add <- `%+%`
> `%MYADD%` <- add
> 1 %MYADD% 2
[1] 3
Run Code Online (Sandbox Code Playgroud)

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

> Reduce(`+`,1:10,0)
[1] 55
Run Code Online (Sandbox Code Playgroud)