[R] Replacing NA values when building matrix using tapply

Chris Long galizur at gmail.com
Fri Oct 5 23:55:05 CEST 2007


I'm building a matrix m from a data frame d which includes the matrix row,
column and value.

This works well enough:

m <- tapply(d[,"value"],d[,c("row","column")],c)

However, I'd like to replace any missing values with 0, not NA.  The
obvious doesn't work, however:

m <- tapply(d[,"value"],d[,c("row","column")],function(x) {ifelse(is.na(x),0.0,x)})

I can always do this:

m <- tapply(d[,"value"],d[,c("row","column")],c)
m[is.na(m)] <- 0.0

But it's wasteful to process the table again.  Any ideas?
Christopher D. Long, San Diego Padres, 100 Park Boulevard, San Diego CA

Score: 0, Diff: 1, clong killed by a Harvard Math Team on  1

More information about the R-help mailing list