R中的负数模

问题描述

对于 -2%%5 和 -2%%7。余数是 3 和 5。我试着看看他们是如何到达 3 和 5 的

a == (a/b)*b + a%b

但我仍然没有 3 和 5。负数如何在 R 中取模?

解决方法

R 与“floored Division”方法一致。 还要考虑您的除数在哪里,例如2 %% -7

在你的情况下,它是这样的:

a <- -2
b <- 5

(a %/% b) * b + a %% b #== a
#> [1] -2 

all.equal(a,(a %/% b) * b + a %% b)
#> [1] TRUE

这里的 %/% 是底除法,%% 是这方面的余数。即

quotient <- floor(a/b)  # = a %/% b
remainder <- a - b*q    # = a %% b
a == quotient*b + remainder
#> [1] TRUE

Wikipedia 对此进行了很好的讨论。