R整数比较似乎忽略了数字位数

时间:2016-02-26 12:25:19

标签: r integer comparison truncation

我在一个维度上有坐标,它描述了一个段的开头和结尾。我正在尝试编写一个函数,它告诉我一个段是在另一个段内。这就是我所拥有的,在这种情况下,看看b是否在a:

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

就好像两个数字从第一个开始并排放置,并且任何不重叠的数字都会被截断。我对这些东西很新,所以请原谅我,如果我缺少一些整数的基本属性。

1 个答案:

答案 0 :(得分: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