创建一个区间 - Base R

问题描述 投票:0回答:2

我想创建一个单一的区间,而不使用 cut 函数。 例如,给定整数 ab 区间 (a,b] 可以通过调用 cut(c(a, 2 * b - a), 2)[1]:

a <- 2.10
b <- 2.15
intervals = cut(c(a, 2 * b - a), 2)
intervals[1]
#> [1] (2.1,2.15]
#> Levels: (2.1,2.15] (2.15,2.2]

如何创建 (a,b] 没有这个变通方法?我一直找不到任何关于间隔的文档,而不是关于 cutfindInterval 函数。

r intervals
2个回答
1
投票

好吧--我承认我还没有完全理解这一点的全部用处,但这里有一个你可以做的建议。

由于 cut 只不过是字符向量,你可以用你的变量来构造它们。ab的输出中是否存在一个特定的兴趣区间,并使用它们来测试在 cut.

例子:首先做一些区间来搜索。

set.seed(1)
mydata=sample(1:100,20)
mycutintervals=cut(mydata,7)
mycutintervals

现在构建感兴趣的区间来检查是否存在。

make_interval=function(x,y) paste0("(",x,",",y,"]")

a=19
b=32
# is interval from a to b present?
make_interval(a,b) %in% mycutintervals
# [1] TRUE

c=50
# what about interval from a to c?
make_interval(a,c) %in% mycutintervals
# [1] FALSE

0
投票

也许下面的一个选项可以帮助你

> cut(c(a,b),range(c(a-.Machine$double.eps,b)))
[1] (2.1,2.15] (2.1,2.15]
Levels: (2.1,2.15]

> na.exclude(cut(c(a,b),range(a,b)))
[1] (2.1,2.15]
attr(,"na.action")
[1] 1
attr(,"class")
[1] exclude
Levels: (2.1,2.15]
© www.soinside.com 2019 - 2024. All rights reserved.