Re: [R] index vector

From: Marc Schwartz (via MN) <mschwartz_at_mn.rr.com>
Date: Fri 29 Sep 2006 - 20:54:43 GMT

On Fri, 2006-09-29 at 16:13 -0400, bertrand toupin wrote:

> Hi!  1st time I'm posting here.  I'm beginning to learn R and I've
> encountered a problem that I'm unable to solve so far.
> 
> I have  a 20 000 x 5 matrix.  In the 5th column, I have elevation.
> Missing value are actually put to -99999.  I want to track down the
> index of those values and replace them with NA.  I've read that to
> replace, the command "replace" is enough.  I just don't know how to
> construct the index vector that contains the index of -99999 values.
> 
> Hope this makes sense,
> Thanks!
> Philippe


See ?is.na and note the use of:

  is.na(x) <- value

Example:

> mat <- matrix(sample(50), 10, 5)

> mat

      [,1] [,2] [,3] [,4] [,5]
[1,] 24 39 40 30 5
[2,] 8 44 3 34 47
[3,] 23 12 16 14 45
[4,] 35 26 2 11 6
[5,] 13 15 42 33 19
[6,] 7 36 31 49 37
[7,] 29 41 9 27 4
[8,] 48 1 22 25 17
[9,] 43 32 28 38 20

[10,] 18 50 46 21 10

# Set some values in column 5 to -99999
> mat[sample(10, 3), 5] <- -99999

> mat

      [,1] [,2] [,3] [,4]   [,5]

[1,] 24 39 40 30 5
[2,] 8 44 3 34 47
[3,] 23 12 16 14 45
[4,] 35 26 2 11 6
[5,] 13 15 42 33 -99999
[6,] 7 36 31 49 -99999
[7,] 29 41 9 27 4
[8,] 48 1 22 25 17
[9,] 43 32 28 38 20

[10,] 18 50 46 21 -99999
# Use which to get the indices within column 5
# of those values which are -99999
# See ?which

> which(mat[, 5] == -99999)
[1] 5 6 10

# Now extend that and set those to NA
> is.na(mat[, 5]) <- which(mat[, 5] == -99999)

> mat

      [,1] [,2] [,3] [,4] [,5]
[1,] 24 39 40 30 5
[2,] 8 44 3 34 47
[3,] 23 12 16 14 45
[4,] 35 26 2 11 6
[5,] 13 15 42 33 NA
[6,] 7 36 31 49 NA
[7,] 29 41 9 27 4
[8,] 48 1 22 25 17
[9,] 43 32 28 38 20

[10,] 18 50 46 21 NA

Note one other possibility, which is that if you used one of the read.table() family functions to read in a delimited ASCII file containing the data set, you can set the 'na.strings' argument to "-99999" and have it set these to NA upon importing. See ?read.table for more information.

HTH, Marc Schwartz



R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. Received on Sat Sep 30 07:09:15 2006

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.1.8, at Fri 29 Sep 2006 - 21:30:15 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.