[R] replace NULL with NA in matrix

Marc Schwartz marc_schwartz at comcast.net
Thu Apr 17 15:38:31 CEST 2008


Tim Smith wrote:
> Hi,
> 
> I had a matrix with NULL values, which I wanted to replace with NA. Is there an efficient way to do this? 
> 
> Small sample input matrix:
>         A       B       C       D       E
> 1 5222.18 6355.10 4392.68 2607.41 4524.09
> 2    NULL  257.33    NULL  161.51  119.44
> 3    NULL  274.80  305.28  443.27    NULL
> 4 1759.76 1556.45 1224.06 1558.73 1837.09
> 
> 
> Tim

If you are reading this in from a text file, you can use:

  mat <- as.matrix(read.table(YourFileName, header = TRUE,
                   na.strings = "NULL"))

See the 'na.strings' argument in ?read.table

Note that by default, this will be read in as a data frame, not a 
matrix, so I added the extra coercion. The difference is quite important.

The above should yield:

 > mat
         A       B       C       D       E
1 5222.18 6355.10 4392.68 2607.41 4524.09
2      NA  257.33      NA  161.51  119.44
3      NA  274.80  305.28  443.27      NA
4 1759.76 1556.45 1224.06 1558.73 1837.09

 > str(mat)
  num [1:4, 1:5] 5222   NA   NA 1760 6355 ...
  - attr(*, "dimnames")=List of 2
   ..$ : chr [1:4] "1" "2" "3" "4"
   ..$ : chr [1:5] "A" "B" "C" "D" ...



HTH,

Marc Schwartz



More information about the R-help mailing list