Hi schubbiaschwilli,
das ist ein allgemeines Informatikproblem. Man darf Fließkommazahlen niemals mit == vergleichen. Auf der allerletzten Binärstelle kann es da Unterschiede geben, die Dir nie angezeigt werden.
Google ist voll von Warnungen, aber es ist einfach zu verführerisch.
Schau beispielsweise mal hier:
https://floating-point-gui.de/errors/comparison/
Oder hier mal ganz polyglott um zu zeigen, dass das nichts spezielles für R ist:
https://www.geeksforgeeks.org/problem-i ... correctly/
LG,
Bernhard
PS: Ich weiß nicht, ob Du es schon wusstest, aber man kann sich in R auch infix-Funktionen wie die folgende "almost equal" Funktion selbst schreiben:
Code: Alles auswählen
# almost equal function %aeq%
`%aeq%` <- function(a, b){
margin <- 1e-6
abs(a-b) < margin
}
a <- 3*.0001
b <- .0003
a == b
#> [1] FALSE
a %aeq% b
#> [1] TRUE
gamma<-seq(0.05, 0.1, 0.01)
gamma==0.07
#> [1] FALSE FALSE TRUE FALSE FALSE FALSE
gamma==0.06
#> [1] FALSE FALSE FALSE FALSE FALSE FALSE
gamma %aeq% 0.07
#> [1] FALSE FALSE TRUE FALSE FALSE FALSE
gamma %aeq% 0.06
#> [1] FALSE TRUE FALSE FALSE FALSE FALSE
Du musst Dir halt einen geeigneten Wert für
margin überlegen.