Mary
Mary

Reputation: 27

function returns vector with true or false value

 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

Answers (1)

Ronak Shah
Ronak Shah

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

Related Questions