ID EN
Vector & List

findInterval

R Base 3.6.2 🇮🇩 Bahasa Indonesia

Diberikan vektor titik henti sementara yang tidak menurun dalam vec, carilah interval yang memuat setiap elemen x; yaitu, jika i

Syntax

R
findInterval(x, vec, rightmost.closed = FALSE, all.inside = FALSE,
             left.open = FALSE)

Arguments

Parameter Deskripsi
x numeric.
vec numeric, sorted (weakly) increasingly, of length N, say.
rightmost.closed logical; if true, the rightmost interval, vec[N-1] .. vec[N] is treated as closed, see below.
all.inside logical; if true, the returned indices are coerced into 1,…,N-1, i.e., 0 is mapped to 1 and N to N-1.
left.open logical; if true all the intervals are open at left and closed at right; in the formulas below, \(\le\) should be swapped with \(<\) (and \(>\) with \(\ge\)), and rightmost.closed means ‘leftmost is closed’. This may be useful, e.g., in survival analysis computations.

Return Value

vektor dengan panjang length(x) dengan nilai dalam 0:N (dan NA) di mana N <- panjang(vec), atau nilai dipaksa menjadi 1:(N-1) jika dan hanya jika all.inside = TRUE (ekuivalen memaksa semua nilai x di dalam interval). Perhatikan bahwa NA disebarkan dari x, dan nilai Inf diperbolehkan di x dan vec.

Details

Fungsi findInterval mencari indeks dari satu vektor x pada vektor lain, vec, yang mana vektor tersebut harus tidak menurun. Jika ini sepele, setara dengan apply( outer(x, vec, ">="), 1, sum), pada kenyataannya, algoritma internal menggunakan pencarian interval untuk memastikan kompleksitas \(O(n \log N)\) di mana n <- panjang(x) (dan N <- panjang(vec)). Untuk (hampir) diurutkan x, akan lebih cepat lagi, pada dasarnya \(O(n)\). Perhitungan ini sama dengan fungsi distribusi empiris, dan tentu saja, findInterval(t, sort(X)) identik dengan \(n F_n(t; X_1,\dots,X_n)\) dengan \(F_n\) adalah fungsi distribusi empiris dari \(X_1,\dots,X_n\). Ketika paling kanan.tertutup = TRUE, hasil untuk x[j] = vec[N] (\( = \max vec\)), adalah N - 1 seperti untuk semua nilai lainnya pada interval terakhir. left.open = BENAR kadang-kadang kita

Contoh

Example
R
# NOT RUN {
x <- 2:18
v <- c(5, 10, 15) # create two bins [5,10) and [10,15)
cbind(x, findInterval(x, v))

N <- 100
X <- sort(round(stats::rt(N, df = 2), 2))
tt <- c(-100, seq(-2, 2, len = 201), +100)
it <- findInterval(tt, X)
tt[it < 1 | it >= N] # only first and last are outside range(X)

##  'left.open = TRUE' means  "mirroring" :
N <- length(v)
stopifnot(identical(
                  findInterval( x,  v,  left.open=TRUE) ,
              N - findInterval(-x, -v[N:1])))
# }

See Also

approx(* method = "constant") which is a generalization of findInterval() ecdf for computing the empirical distribution function which is (up to a factor of \(n\)) also basically the same as findInterval(.).