R:计算R

时间:2017-04-22 08:27:50

标签: r factors

我正在玩R一点点,我出现了这种我不明白的行为:

num <- seq(1,20,1)

num[num %% c(1,2) == 0]
[1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

所以它似乎是

的模拟表达
num[num %% 1 == 0 | num %% 2 == 0]

但是当我做以下事情时会变得奇怪:

num[num %% c(1,3) == 0]
[1]  1  3  5  6  7  9 11 12 13 15 17 18 19

num[num %% c(1,4) == 0] 
[1]  1  3  4  5  7  8  9 11 12 13 15 16 17 19 20

我一直在考虑它,但我不能对此作出解释。这只是出于好奇,但如果有人有理由听到它会很有趣!

谢谢!

1 个答案:

答案 0 :(得分:0)

正如jogo所说,它是回收规则。

num %% 1的结果是

[1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

虽然num %% 3的结果是

[1] 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2 0 1 2

查看num %% c(1,3)

的结果

[1] 0 2 0 1 0 0 0 2 0 1 0 0 0 2 0 1 0 0 0 2

结果中的第一个数字来自num %% 1结果的第一个数字,第二个来自num %% 3结果的第二个数字,第三个来自num %% 1中的第三个数字等等。