# [R] NAs and row/column calculations

Greg Snow Greg.Snow at imail.org
Thu Mar 11 23:36:09 CET 2010

```What do you expect a[!is.na(a)] to be?

The a matrix has 30 elements, 5 rows, and 6 columns.  You tell R to throw away 4 elements leaving you with 26, the computer (and most of the rest of us) doesn't know how to make a 5x6 matrix with only 26 elements.  It could make a 2x13 or 13x2, but that is unlikely what you want, so it just returns a vector without dimensions which then confuses the apply function.

> apply(a,2,sum, na.rm=TRUE)

Or

> apply(a, 2, function(x) sum( x[!is.na(x)] ) )

Hope this helps,

--
Gregory (Greg) L. Snow Ph.D.
Statistical Data Center
Intermountain Healthcare
greg.snow at imail.org
801.408.8111

> -----Original Message-----
> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> project.org] On Behalf Of Jim Bouldin
> Sent: Thursday, March 11, 2010 3:26 PM
> To: R help
> Subject: [R] NAs and row/column calculations
>
>
> I continue to have great frustrations with NA values--in particular
> making
> summary calculations on rows or cols of a matrix containing them.  For
> example, why does:
>
> > a = matrix(1:30,nrow=5)
> > is.na(a[c(1:2),c(3:4)]);a
>      [,1] [,2] [,3] [,4] [,5] [,6]
> [1,]    1    6   NA   NA   21   26
> [2,]    2    7   NA   NA   22   27
> [3,]    3    8   13   18   23   28
> [4,]    4    9   14   19   24   29
> [5,]    5   10   15   20   25   30
> > apply(a[!is.na(a)],2,sum)
>
> give me this:
>
> "Error in apply(a[!is.na(a)], 2, sum) : dim(X) must have a positive
> length"
>
> when
>
> > dim(a)
> [1] 5 6
>
> What is the trick to calculating summary values from rows or columns
> containing NAs?  Drives me nuts.  More nuts that is.
>
> Thanks.
>
>
>
>
> Jim Bouldin, PhD
> Research Ecologist
> Department of Plant Sciences, UC Davis
> Davis CA, 95616
> 530-554-1740
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help