# [R] Unexpected returned value from a function

Hutchinson,David [PYR] David.Hutchinson at ec.gc.ca
Wed Sep 17 00:19:53 CEST 2008

```Hi R-Users,

I wrote a simple function to change values of a matrix or vector to NA
based on the element value being -9999 or -999999. I don't understand
why the function returns a unit vector (NA) instead of setting all
values in the vector which have -9999 or -999999 to NA. When I apply the
function in line, it appears to work correctly?

Can someone enlighten me what I am doing wrong?

David

Here's my example:

ConvertMissingToNA <- function (values) {
return ( values[ values == -9999 | values == -999999] <- NA )
}

d <- floor(runif(10, 1, 100))
pos <- floor (runif(5, 1, 10))
d[pos] <- -9999
pos <- floor (runif(2, 1, 10))
d[pos] <- -999999
print (d)

# now apply function
e <- ConvertMissingToNA (d)  # will return NA as a unit vector
print (e)

# conduct function in-line
d[ d == -9999 | d == -999999] <- NA # correctly converts values to NA
print (d)

```