R 检查一个数字是否介于其他两个数字之间
我正在寻找一个函数,验证一个数字是否介于其他两个数字之间。我还需要控制是否需要严格比较(a 我知道R 检查一个数字是否介于其他两个数字之间,r,range,R,Range,我正在寻找一个函数,验证一个数字是否介于其他两个数字之间。我还需要控制是否需要严格比较(a 我知道dplyr中的函数between()。但是,我必须知道上下数字 MyNumber = 8 First = 2 Second = 10 # This will return TRUE between(MyNumber, lower = First, upper = Second) # But this will return FALSE between(MyNumber, lower = Sec
dplyr
中的函数between()
。但是,我必须知道上下数字
MyNumber = 8
First = 2
Second = 10
# This will return TRUE
between(MyNumber, lower = First, upper = Second)
# But this will return FALSE
between(MyNumber, lower = Second, upper = First)
# This will return TRUE. I want it to return FALSE
First = 8
between(MyNumber, lower = First, upper = Second)
我需要一个返回TRUE
的函数,无论顺序如何。类似于:
between2 <- function(number,bounds) { number > min(bounds) & number < max(bounds)}
between2(8, c(2,10))
[1] TRUE
between2(8, c(10,2))
[1] TRUE
你可以用一个简单的算术:
between <- function(number, first, second) { (first - number) * (second - number) < 0 }
您可以将%中的
%与:
功能一起使用,只要您现在第一个
和最后一个
:
first <- 2
last <- 10
number <- 8
number %in% first:last
[1] TRUE
first <- 10
last <- 2
number <- 8
number %in% first:last
[1] TRUE
first <- 10
last <- 12
number <- 8
number %in% first:last
[1] FALSE
first <- 12
last <- 10
number <- 8
number %in% first:last
[1] FALSE
你怎么了
f_between <- function (num, L, R) num>=min(L,R) & num<=max(L,R)
f_between(8, 2, 10)
#[1] TRUE
f_between(6, 6, 10)
#[1] TRUE
f_between(2, -10, -2)
#[1] FALSE
f_between(3, 5, 7)
#[1] FALSE
f_between=min(L,R)&numThanks。奇怪的是,没有“自然”函数能做到这一点。也许有,但有时构建函数比寻找包更容易:)很好:)@Niek修复了这个部分,它不能完成我需要的工作。参见上面的示例我认为这是最好的方法,它是即时的,可以让您轻松处理L
中的NA
或R
中的NA.rm=T
。在其他失败的地方,包括我的。
first <- 2
last <- 10
number <- 8
number %in% first:last
[1] TRUE
first <- 10
last <- 2
number <- 8
number %in% first:last
[1] TRUE
first <- 10
last <- 12
number <- 8
number %in% first:last
[1] FALSE
first <- 12
last <- 10
number <- 8
number %in% first:last
[1] FALSE
my_between <- function(n, f, l, strict = FALSE) {
if (!strict) {
n %in% f:l # if strict == FALSE (default)
} else {
n %in% (f+1):(l-1) # if strict == TRUE
}
}
my_between(8, 2, 10)
f_between <- function (num, L, R) num>=min(L,R) & num<=max(L,R)
f_between(8, 2, 10)
#[1] TRUE
f_between(6, 6, 10)
#[1] TRUE
f_between(2, -10, -2)
#[1] FALSE
f_between(3, 5, 7)
#[1] FALSE