为什么 Filter 不能考虑数字的因数?
Why is Filter failing to take factors of a number?
我从一些 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。我忽略了什么?
你错过了几个括号
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
我从一些 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。我忽略了什么?
你错过了几个括号
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