值是否在一个范围内
问题描述:
我想检查一个值是否在一个范围内;如果存在,则插入一个值;否则什么都不做。值是否在一个范围内
说我有一些两个(或多个)载体,
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范围内是否有一个数字时,因为有一个存在;我不想做任何事情。
它看起来很简单,但我失去了一些东西。任何帮助将受到感谢。
答
考虑这个玩具功能的一般实现。 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
答
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)
如果您需要在序列中,而不是在末尾插入值,可以排序使用:
if (!sum(A > 7.8 & A < 8.2)) A <- sort(c(A, 8.01))
答
另一种方法通过dplyr
包between
功能
if(!any(dplyr::between(A,7.8,8.2))) A <- c(A,8.01)
if(!any(dplyr::between(B,7.8,8.2))) B <- c(B,8.01)
您可以使用''发现在这个范围内 – akrun
这就是我的问题在于......如果一个_is_目前的作品但如果一个不是在“A”或“B”的元素? – user1945827
我认为你可以使用Akrun的答案'长度'和'如果' –