2017-04-22 91 views
0

我有R玩一点点,我就出来了这种行为,我不明白:R:计算若干因素中的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 

我一直在想这件事,但我不能出来并对此进行解释。这只是出于好奇,但如果有人有一个理由,这将是非常有趣的听到!

谢谢!

+0

看看回收规则! (在2.2节的[An Introduction to R](http://cran.r-project.org/doc/manuals/R-intro.pdf)中)。 – jogo

回答

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

0123结果

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