为什么Filter取一个数字的因子失败?

问题描述 投票:2回答:1

我从一些我写的R代码中得到了一些奇怪的行为,这些代码是用来分解非零整数的。

factors<-function(num) c(Filter(function(x) num%%x==0,(-num%/%2):num%/%2),num,-num)

我希望 factors(-15) 顺序为 -15, -5, -3, -1, 1, 3, 5, 15. 相反,我得到的是。

> factors(-15)
 [1]   3   3   1   1  -1  -1  -3  -3  -5  -5 -15  15

除了排序非常奇怪(不是应该从-7到7吗? )之外,还漏掉了5。 我忽略了什么?

r operators factors
1个回答
3
投票

你漏了几个括号

factors <- function(num) c(-num, Filter(function(x) num%%x==0, (-num%/%2):(num%/%2)), num)
factors(-15)
# [1]  15   5   3   1  -1  -3  -5 -15

顺便说一下,在这种情况下,它从-8到7进行检查。

(-15%/%2):(15%/%2)
# [1] -8 -7 -6 -5 -4 -3 -2 -1  0  1  2  3  4  5  6  7
© www.soinside.com 2019 - 2024. All rights reserved.