我正在玩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 :(得分: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
中的第三个数字等等。