【问题标题】:R Comparison of integers seems to neglect number of digitsR 整数比较似乎忽略了位数
【发布时间】:2016-02-26 12:25:19
【问题描述】:

我有一维坐标,它描述了一段的开始和结束。我正在尝试编写一个函数,它告诉我一个段在另一个段中。这就是我所拥有的,在这种情况下,看看 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. beginningend 定义在哪里,2. return 是一个函数,需要在括号中给出它的参数等。试试@ 987654326@.

标签: r integer comparison truncation


【解决方案1】:

假设开头和结尾是指向量的最后一个和最后一个元素,这应该有效:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2016-09-30
    相关资源
    最近更新 更多