Почему фильтр не принимает множители числа? - PullRequest
2 голосов
/ 29 мая 2020

Я получаю странное поведение из некоторого кода 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. Что я упустил?

1 Ответ

3 голосов
/ 29 мая 2020

Вы пропустили пару скобок

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...