2016-11-10 3 views
1

Ich kämpfe mit einem seltsamen Verhalten von R. Kann jemand erklären, was passiert?Prüfen, ob Element in Vektor existiert R

Im folgenden Beispiel ist check im ersten Beispiel falsch und im zweiten wahr. Warum unterscheidet sich seq von c?

by <- 0.1 
percentage <- 60 

probs <- seq(0,1,by) 
checkValues <- probs * 100 
check <- percentage %in% checkValues 

probs <- c(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1) 
checkValues <- probs * 100 
check <- percentage %in% checkValues 

Es wird noch seltsamer immer, als ob ich gesetzt by <- 0.25 und percentage <- 75 beide check wahr sind

Antwort

2

Sie haben zum Opfer gefallen floating point error:

p1 <- seq(0,1,0.1) 
p2 <- c(0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1) 
> identical(p1, p2) 
[1] FALSE 
> all.equal(p1, p2) 
[1] TRUE 
+0

'überprüfen <- as.integer (probs * 100) 'repariere es, danke – barracuda317