Search sorted data

kd_lower_bound(x, v)

kd_upper_bound(x, v)

kd_range_query(x, l, u, ...)

# S3 method for matrix
kd_range_query(x, l, u, ...)

# S3 method for arrayvec
kd_range_query(x, l, u, ...)

# S3 method for data.frame
kd_range_query(x, l, u, cols = 1:ncol(x), ...)

kd_rq_indices(x, l, u, ...)

# S3 method for matrix
kd_rq_indices(x, l, u, ...)

# S3 method for arrayvec
kd_rq_indices(x, l, u, ...)

# S3 method for data.frame
kd_rq_indices(x, l, u, cols = 1:ncol(x), ...)

kd_binary_search(x, v)

# S3 method for matrix
kd_binary_search(x, v)

# S3 method for arrayvec
kd_binary_search(x, v)

Arguments

x

an object sorted by kd_sort

v

a vector specifying where to look

l

lower left corner of search region

u

upper right corner of search region

...

additional arguments

cols

integer vector of column indices

Examples

x = matrix(runif(200), 100) y = matrix_to_tuples(x) kd_sort(y, inplace = TRUE)
#> [,1] [,2] #> [1,] 0.19331267 0.05106245 #> [2,] 0.06840642 0.22648133 #> [3,] 0.08183302 0.24046123 #> [4,] 0.20269896 0.03994066 #> [5,] 0.22002471 0.08603899 #> (continues for 95 more rows)
y[kd_lower_bound(y, c(1/2, 1/2)),]
#> [1] 0.5147446 0.6273660
y[kd_upper_bound(y, c(1/2, 1/2)),]
#> [1] 0.5147446 0.6273660
kd_binary_search(y, c(1/2, 1/2))
#> [1] FALSE
kd_range_query(y, c(1/3, 1/3), c(2/3, 2/3))
#> [,1] [,2] #> [1,] 0.5147446 0.6273660 #> [2,] 0.3654865 0.4958347 #> [3,] 0.4073613 0.3401192 #> [4,] 0.4525525 0.4194859 #> [5,] 0.3559015 0.6284502 #> (continues for 8 more rows)
kd_rq_indices(y, c(1/3, 1/3), c(2/3, 2/3))
#> [1] 51 26 23 25 40 41 42 43 44 60 77 78 79