2016-02-26 5 views
0

У меня есть координаты в одном измерении, которые описывают начало и конец сегмента. Я пытаюсь написать функцию, которая говорит мне, что один сегмент находится внутри другого. Это то, что у меня есть, в этом случае, чтобы увидеть, если б находится внутри:R Сравнение целых чисел, по-видимому, пренебрегает числом цифр

isin <- function(a, b){ 

if (a[beginning] <= b[beginning] && a[end] >= b[end]){ 
    return TRUE 
} 

Проблема заключается в том, что она не кажется, уважать различные длины чисел, например:

a <- c(2345, 2380) 
b <- c(234600, 237900) 
isin(a, b) 
TRUE 

Как будто эти два номера ставятся бок о бок, начиная с первого, и все, что не перекрывается, усекается. Я довольно новичок в этом материале, поэтому извините меня, если мне не хватает базового свойства целых чисел.

+0

У этого нет шансов на работу: 1. где определены «начало» и «конец», 2. «возврат» - это функция и требует, чтобы его аргумент указывался в круглых скобках и т. д. Попробуйте 'isin <- function (a, b) a [1] <= b [1] && a [length (a)]> = b [length (b)]' , – mvkorpel

ответ

0

Предполагая, что начало и конец вы имеете в виду последний первый и последний элемент вектора, это должно работать:

isin <- function(a, b){ 

    if (a[1] <= b[1] & a[length(a)] >= b[length(b)]){ 
    # using length() to get the last element of vector 
    return(TRUE) 
    } else {return(FALSE)} 

} 

Используя ваш пример:

> a <- c(2345, 2380) 
> b <- c(234600, 237900) 
> isin(a, b) 
[1] FALSE 

Пример, в котором он возвращает значение TRUE :

> a <- c(1, 9) 
> b <- c(9, 1) 
> isin(a, b) 
[1] TRUE