Reputation: 27
Q1.25% Q3.75% iqr.75%
-4.4 4.9 9.3
outlier<-function(x){
Q<-quartiles(x)
min_outlier<-Q[1]-1.5*Q[3] #outlier based on 25% quartiles
min_outlier
max_outlier<-Q[2]+1.5*Q[3] #outlier based on 75% quartiles
max_outlier
x<-vector()
for (i in 1:length(x)){
if (max_outlier< x[i] || min_outlier>x[i]) {x[i]<-c("true")}
else{x[i]<-c("false")}
x<-x[i]
i<-i+1
}
return(x)
}
#function should return x as true or false values. Error in if (max_outlier < x[i] || min_outlier > x[i]) { : missing value where TRUE/FALSE needed.
Upvotes: 0
Views: 140
Reputation: 388982
You don't need for
loop to check every individual value. Also do you mean quantile
instead of quartiles
.
outlier<-function(x){
Q <- quartiles(x)
min_outlier<-Q[1]-1.5*Q[3]
max_outlier<-Q[2]+1.5*Q[3]
x > max_outlier | x < min_outlier
}
Upvotes: 3