我想检查一个值是否在一个范围内;如果存在,则插入一个值;否则什么都不做。
说我有两个(或更多)矢量,
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范围内的数字时,因为存在一个;我不想做任何事。
看起来很简单,但我遗漏了一些东西。我们将非常感激地提供任何帮助。
答案 0 :(得分:2)
将此玩具功能视为一般实施。 x
是输入向量,l
和u
是下限和上限,而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