Este problema é bastante conhecido no R. Por exemplo, teste o seguinte:
x <- .2
y <- 1-.8
x
y
x == y
sprintf("%.50f", x)
sprintf("%.50f", y)
Veja que, em teoria, esperaríamos que x fosse igual a y, mas isto não ocorre devido aos erros de ponto flutuante do R. O teu código tem o mesmo problema.
No teu caso específico, sugiro eliminar os valores que são outliers sem digitá-los no R. Utilize diretamente o valor calculado pelo programa. Por exemplo,
set.seed(1507)
index <- 1:1000
SCD <- rnorm(1000)
data <- data.frame(index, SCD)
outliers <- boxplot.stats(data$SCD)$out
outliers.index <- match(data$SCD, outliers)
data <- data[
is.na(outliers.index), ]
dim(data)