But the evalq solution does change a. > a <- c(2, NA, 3) > b <- c(3,4, 5) > evalq({a[is.na(a)]<-0;a})+b [1] 5 4 8 > a [1] 2 0 3
If evalq were changed to local then it would not change a: > a <- c(2, NA, 3) > b <- c(3,4, 5) > local({a[is.na(a)]<-0;a})+b [1] 5 4 8 > a [1] 2 NA 3 Also the replace, ifelse and mapply solutions do not change a. On 5/2/06, Berton Gunter <[EMAIL PROTECTED]> wrote: > Below. > > > -----Original Message----- > > From: Gabor Grothendieck [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, May 02, 2006 10:42 AM > > To: Berton Gunter > > Cc: John Kane; R R-help > > Subject: Re: [R] Adding elements in an array where I have > > missing data. > > > > On 5/2/06, Berton Gunter <[EMAIL PROTECTED]> wrote: > > > > > > > > Here are a few alternatives: > > > > > > > > replace(a, is.na(a), 0) + b > > > > > > > > ifelse(is.na(a), 0, a) + b > > > > > > > > mapply(sum, a, b, MoreArgs = list(na.rm = TRUE)) > > > > > > > > > > Well, Gabor, if you want to get fancy... > > > > > > evalq({a[is.na(a)]<-0;a})+b > > > > > > > Note that the evalq can be omitted: > > > > { a[is.na] <- 0; a } + b > > > > No it can't. The idea is **not** to change the original a. > > -- Bert > > ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html