2

我正在尝试将一些随机生成的数字“合并”在我之前拥有的值向量中的相邻值之间定义的间隔之间。所以基本上,我有以下几点:

vectorA包含从 101 到 0 的 101 个值。我生成一个名为 x 的随机数。现在我想看看在vectorA中相邻的两个数字之间的哪个区间它属于哪个区间?最后,一旦找到区间,我就会返回这两个值。

我有一个 if 语句;if (x < vectorA[k] | x > vectorA[k+1]),在for循环下,因此if语句可以遍历vectorA的所有增量。

我想远离 R 的休息方法,因为我需要获取实际的 bin 间隔值并使用它们来计算一些东西。

4

1 回答 1

4

正如本指出的,findInterval是你的朋友。

vectorA但是必须按升序排序。

findRange <- function(x, v) {
  i <- findInterval(x, v)
  list(from=i, to=i+1L)
}

v <- seq(1, 100, 10) # Must be sorted in ascending order!
x <- runif(10, 1, 100)
findRange(x, v)

如果您的 vectorA 从高到低排序,则必须将其反转并修改索引:

iRev <- findInterval(x, rev(vectorA))
iLow <- length(vectorA) - iRev
iHigh <- iLow + 1L
于 2012-04-20T22:27:33.857 回答