[R] Summing list with NA elements

R. Michael Weylandt michael.weylandt at gmail.com
Fri May 4 13:37:54 CEST 2012


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:
> 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
>
>> Reduce(`+`, x)
>     [,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
>
>> Reduce(`+`, x)
>     [,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.
>
> ______________________________________________
> R-help at 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.



More information about the R-help mailing list