See if this works for you: DF[is.na(DF)] <- 0
On Mon, Mar 29, 2010 at 8:21 PM, Dimitri Liakhovitski <ld7...@gmail.com> wrote: > Dear R'ers, > > I have a very large data frame (over 4000 rows and 2,500 columns). My > task is very simple - I have to replace all NAs with a zero. My code > works fine on smaller data frames - but I have to deal with a huge one > and there are many NAs in each column. > R runs out of memory on me ("Reached total allocation of 1535Mb: see > help(memory.size)"). Is there any other, more efficient way of doing > it? > Thanks a lot for any hints! > Dimitri > > > # Building an example frame: > frame<-data.frame(a=rnorm(1:100),b=rnorm(1:100),c=rnorm(1:100),d=rnorm(1:100),e=rnorm(1:100),f=rnorm(1:100),g=rnorm(1:100)) > set.seed(1234) > for(i in names(frame)){ > i.for.NA<-sample(1:100,60) > frame[[i]][i.for.NA]<-NA > } > > # Replacing all NAs in "frame" with zeros - is of course fast in this > example, because this data frame is very small > system.time({ > frame<-lapply(frame,function(x){ > x[is.na(x)]<-0 > return(x) > })}) > > > -- > Dimitri Liakhovitski > Ninah.com > dimitri.liakhovit...@ninah.com > > ______________________________________________ > R-help@r-project.org 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. > ______________________________________________ R-help@r-project.org 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.