价值是否存在于范围内

时间:2016-09-17 14:16:41

标签: r

我想检查一个值是否在一个范围内;如果存在,则插入一个值;否则什么都不做。

说我有两个(或更多)矢量,

A <- c(1.1, 3.4, 5.5, 10.2)
B <- c(1.1, 3.4, 5.5, 8.01, 10.2)

如果我查看向量A是否存在7.8到8.2范围内的数字,由于没有一个数字,我想插入数字8.01。

当我看向量B并测试是否存在7.8到8.2范围内的数字时,因为存在一个;我不想做任何事。

看起来很简单,但我遗漏了一些东西。我们将非常感激地提供任何帮助。

3 个答案:

答案 0 :(得分:2)

将此玩具功能视为一般实施。 x是输入向量,lu是下限和上限,而x0是要插入的值(如果需要插入)。

foo <- function (x, l, u, x0) {
  z1 <- x > l
  z2 <- x < u
  if (sum(z1 & z2)) x
  else append(x, x0, which(z1)[1] - 1)
  }

A <- c(1.1, 3.4, 5.5, 10.2)
B <- c(1.1, 3.4, 5.5, 8.01, 10.2)

foo(A, 7.8, 8.2, 8.01)
#[1]  1.10  3.40  5.50  8.01 10.20

foo(B, 7.8, 8.2, 8.01)
#[1]  1.10  3.40  5.50  8.01 10.20

答案 1 :(得分:1)

if ( !sum(A > 7.8 & A < 8.2 ) ) A <- c(A, 8.01)
if ( !sum(B > 7.8 & B < 8.2 ) ) B <- c(B, 8.01)

如果需要在序列中而不是在末尾插入值,可以使用sort:

if ( !sum(A > 7.8 & A < 8.2 ) ) A <- sort(c(A, 8.01))

答案 2 :(得分:1)

通过new BufferedWriter(new FileWriter(file))

between功能的另一种方法
dplyr