Changing zeros to NAs in a data frame
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