Sto sottomettendo un set di dati prima del tracciamento, ma essendo la chiave numerica non posso usare il rigoroso test di uguaglianza di match()
o %in%
(mancano alcuni valori). Ho scritto la seguente alternativa, ma immagino che questo problema sia abbastanza comune da trovare un'alternativa incorporata migliore da qualche parte? all.equal
non sembra essere progettato per più valori di test.match() valori con tolleranza
select_in <- function(x, ref, tol=1e-10){
testone <- function(value) abs(x - value) < tol
as.logical(rowSums(sapply(ref, testone)))
}
x = c(1.0, 1+1e-13, 1.01, 2, 2+1e-9, 2-1e-11)
x %in% c(1,2,3)
#[1] TRUE FALSE FALSE TRUE FALSE FALSE
select_in(x, c(1, 2, 3))
#[1] TRUE TRUE FALSE TRUE FALSE TRUE
@Frank nope :) si prega di inviare come risposta – baptiste
@ Grande idea! –