[R] Changing zeros to NAs in a data frame

Prof Brian Ripley ripley at stats.ox.ac.uk
Tue Nov 16 18:53:28 CET 2004


On Tue, 16 Nov 2004, Laura Holt wrote:

> Dear R People:
>
> I have a data frame with some columns that are numeric and some which are 
> factors.
>
> There are zeros in the numeric columns and I would like to change them to 
> NAs.  However, there are zeros in some of the factor columns, and I would 
> like them to be left alone.
>
> Is there a "global" way to do this, please?  I was thinking about use the 
> results from "str" but am not sure.

myDF <- data.frame(a=0:4, b=letters[1:5], c=-2:2)
myDF[] <- lapply(myDF, function(x) if(is.numeric(x)) {x[x==0] <- NA; x} else x)
> myDF
    a b  c
1 NA a -2
2  1 b -1
3  2 c NA
4  3 d  1
5  4 e  2


-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595




More information about the R-help mailing list