我在一个维度上有坐标,它描述了一个段的开头和结尾。我正在尝试编写一个函数,它告诉我一个段是在另一个段内。这就是我所拥有的,在这种情况下,看看b是否在a:
中isin <- function(a, b){
if (a[beginning] <= b[beginning] && a[end] >= b[end]){
return TRUE
}
问题是,它似乎并不尊重不同长度的数字,例如:
a <- c(2345, 2380)
b <- c(234600, 237900)
isin(a, b)
TRUE
就好像两个数字从第一个开始并排放置,并且任何不重叠的数字都会被截断。我对这些东西很新,所以请原谅我,如果我缺少一些整数的基本属性。
答案 0 :(得分:0)
假设通过开头和结尾表示向量的最后一个和最后一个元素,这应该有效:
isin <- function(a, b){
if (a[1] <= b[1] & a[length(a)] >= b[length(b)]){
# using length() to get the last element of vector
return(TRUE)
} else {return(FALSE)}
}
使用您的示例:
> a <- c(2345, 2380)
> b <- c(234600, 237900)
> isin(a, b)
[1] FALSE
返回TRUE的示例:
> a <- c(1, 9)
> b <- c(9, 1)
> isin(a, b)
[1] TRUE