在R语言中,双百分号 (%%
) 用于什么目的?
从使用效果来看,它貌似会将前面的数字除以后面的数字尽可能多的次数,并返回余数。这样理解正确吗?
出于好奇,这种操作在什么情况下会有用?
在R语言中,双百分号 (%%
) 用于什么目的?
从使用效果来看,它貌似会将前面的数字除以后面的数字尽可能多的次数,并返回余数。这样理解正确吗?
出于好奇,这种操作在什么情况下会有用?
?"%%"
访问)中说:
只有当您已经进行了足够的编程,知道这是指模运算,即整数除以‘
%%
’表示‘x mod y’
y
并返回余数时,才会有所帮助。这在许多应用程序中非常有用。例如(来自@GavinSimpson的评论),如果您正在运行循环并希望每隔n次迭代向屏幕打印某种进度指示器,则%%
很有用(例如使用if (i %% 10 == 0) { #do something}
来执行每第10次迭代的操作)。%%
在R中也适用于浮点数,因此我找到了一个例子,其中使用if (any(wts %% 1 != 0))
来测试任何wts
值是否为非整数。%%
返回余数,例如:s=c(1,8,10,4,6)
d=c(3,5,8,9,2)
x=s%%d
x
[1] 1 3 2 4 0
%%
运算符不是交换律(即a %% b != b %% a
)。360 %% 90
是 0(360/90 的余数为 0);90 %% 360
是 90(90/360 的余数为 90)。-90 %% 360
解释起来有点棘手,但a %% b
的结果始终在 0(包括)和 b(不包括)之间。 (如果这有帮助的话,取模有时被称为“时钟算术”...) - Ben Bolker