[R] 0 * NA = NA
(Ted Harding)
ted.harding at nessie.mcc.ac.uk
Mon Mar 5 16:07:35 CET 2007
On 05-Mar-07 Alberto Monteiro wrote:
> Is there any way to "force" 0 * NA to be 0 instead of NA?
>
> For example, suppose I have a vector with some valid values, while
> other values are NA. If I matrix-pre-multiply this by a weight
> row vector, whose weights that correspond to the NAs are zero,
> the outcome will still be NA:
>
> x <- c(1, NA, 1)
> wt <- c(2, 0, 1)
> wt %*% x # NA
>
> Alberto Monteiro
This is a bit of a tricky one, especially in a more general context.
I think it involves defining new operators.
In the case of the particular operation in your example, you could do
"%*NA%" <- function(x,y){
X<-x;X[(is.na(x))&(y==0)]<-0;
Y<-y;Y[(is.na(Y))&(x==0)]<-0;
return(X%*%Y)
}
Then:
x <- c(1, NA, 1)
wt <- c(2, 0, 1)
x %*NA% wt
[,1]
[1,] 3
Hmmm!
Ted.
--------------------------------------------------------------------
E-Mail: (Ted Harding) <Ted.Harding at manchester.ac.uk>
Fax-to-email: +44 (0)870 094 0861
Date: 05-Mar-07 Time: 15:07:19
------------------------------ XFMail ------------------------------
More information about the R-help
mailing list