r - 为什么 Filter 无法提取数字的因数?

标签 r operators factors

我从我编写的用于分解非零整数的一些 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 - 为什么 Filter 无法提取数字的因数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62087828/

相关文章:

r - 查看包中是否存在变量/函数?

sql - "<>"的 SQL 运算符名称是什么?

performance - 生成除数的两个简单代码。为什么递归更快?

r - "Error in library(rjson): There is no package called rjson"

r - 使用 r : Check existence of directory and create it if it doesn't exist 进行文件夹管理

c# - Int32.Equals 与 '==' 运算符

r - 合计 : sum not meaningful for factors

r - 按行查找出现次数最多的值

r - 求偶数和奇数的最大值和最小值

c# - c#中运算符的问题