2016-02-21 3 views
0

Я пытаюсь сделать простую функцию, которая, когда вы помещаете в три числа - x - любую числовую переменную, а y и z - min и max диапазона , функция вернет сообщение сообщая вам, находится ли число в диапазоне или нет. Я должен использовать конкретную формулировку x % in range в функцииПростая функция диапазона

inrange = function(x, y, z){ 
range = y:z 
if (x % in range) 
    print("number is in range") 
    else print("number is not in range") 
} 

Когда я пытаюсь этот код, который я вернулся с ошибкой, что она не признающая закрывающей скобкой. Почему это?

+3

Возможно, вам нужно использовать 'if (x% in% range)' вместо 'x% in range' –

+1

Почему вы хотите сделать это таким образом, а не просто проверять границы напрямую с помощью <= and > =. – Dason

+0

... и возврат значения TRUE/FALSE может быть более полезным, чем печать сообщения ... –

ответ

1

Вот Векторизованная версия, которая работает не только с последовательностью с шагом функциями 1. Она возвращает индексы х, которые находятся в пределах диапазона

inrange <- function(x, y, z) { 
    y <- rep(y, length=length(x)) # To fix partial recycling of y/z 
    (x>=pmin(y,z)) * (x<=pmax(y,z)) 
} 

Это позволяет Вам делать такие вещи, как:

> inrange(1:10, 3, 7) 
[1] 0 0 1 1 1 1 1 0 0 0 
+0

Это почти то же самое, что и функции 'between()' и 'inrange()' из 'data .table' упаковка. – Uwe

Смежные вопросы