# Warning: the condition has length > 1 and only the first element will be used

R-lang throws the warning, the condition has length > 1 and only the first element will be used because `if` statement is not vectorized. In it’s place you need to use `ifelse` or you can use `any()` function.

Suppose you have a vector –

`a <- c(1,2,3,0,0,4,5,0,0,1)`

And you want to do an operation on it using `if` statement –

```w<-function(a){
if (a>0){
a/sum(a)
}
else 1
}```

What we are trying to achieve is updating the values of vector `a` to value / sum of all values, if the value is greater than 0 otherwise set it to 1. So, the above vector should return –

```// sum(a) = 1+2+3+0+0+4+5+0+0+1 = 16
a <- c(1/16, 2/16, 3/16, 1, 1, 4/16, 5/16, 1, 1, 1/16)```

But the code will return a warning message –

``` Warning message:
In if (a > 0) { :
the condition has length > 1 and only the first element will be used```

## Solution

There are 2 ways of doing this – using `any()` or `ifelse`

```w <- function(a){
if (any(a>0)){
a/sum(a)
}
else 1
}```
```w <- function(a){
ifelse(a>0,a/sum(a),1)
}```