Функция all.equal
возвращает TRUE, если целевой и текущий аргументы почти равны заданному допуску, значение которого по умолчанию близко к 1.5e-8. Функция не возвращает FALSE в противном случае, скорее она возвращает среднюю относительную (scale=NULL
) или абсолютную (scale=1
) разницу.
x = rep(1, 1000)
y = rep(1, 1000)
x = x + 0.001
y[1] = 2
print(all.equal(x, y, scale = 1)) # Omit the tolerance
[1] "Mean absolute difference: 0.001998"
mean(abs(x-y))
[1] 0.001998
Если вы прочитали страницу справки для all.equal, вы увидите причину:
tolerance numeric ≥ 0. Differences smaller than tolerance are not reported.
Редактировать : На основании оценки Аароном источника путаницы ОП, возможно, потребовалась функция any
:
y[1] = 1
any(abs(x-y) > 0.01) # Element-wise comparison
[1] FALSE
y[1] = 2
any(abs(x-y) > 0.01)
[1] TRUE