Skip to content

Summing list with NA elements

4 messages · Dimitris Rizopoulos, R. Michael Weylandt, Evgenia

#
I have a list ( in my real problem  a double list y[[1:24]][[1:15]] but I
think the solution would be the same)

m <- matrix(1:3, 3, 3)
x <- list(m, m+3, m+6)
 and as I want to have the sum of elements I use Reduce(`+`, x)
having as result
[,1] [,2] [,3]
[1,]   12   12   12
[2,]   15   15   15
[3,]   18   18   18

How can I take the sum of the list elements ignoring NA element
For example if I have
x[[1]][1]<-NA

Then I want to have 
     [,1] [,2] [,3]
[1,]  11   12   12
[2,]   15   15   15
[3,]   18   18   18

instead of
[,1] [,2] [,3]
[1,]   NA   12   12
[2,]   15   15   15
[3,]   18   18   18

Thanks in advance

Evgenia



--
View this message in context: http://r.789695.n4.nabble.com/Summing-list-with-NA-elements-tp4608167.html
Sent from the R help mailing list archive at Nabble.com.
#
one solution is to set NAs to 0, e.g.,

m <- matrix(1:3, 3, 3)
x <- list(m, m+3, m+6)
x[[1]][1] <- NA

x. <- lapply(x, function (x) {x[is.na(x)] <- 0; x} )
Reduce("+", x.)


I hope it helps.

Best,
Dimitris
On 5/4/2012 11:19 AM, Evgenia wrote:

  
    
#
Inelegant, but this is one way:

Reduce(function(e1, e2){e1[is.na(e1)] <- 0; e2[is.na(e2)] <- 0; (e1 + e2)}, x)

I.e., set the NAs to 0 before adding in the reduce function.

Michael
On Fri, May 4, 2012 at 5:19 AM, Evgenia <evgts at aueb.gr> wrote: