On 07-May-05 Gillian Rutherford wrote: > Dear R colleagues, > > I am trying to create a new column in a data frame, which > converts values and NA's from another column into binary format. > Essentially I need the NA's to become 1 and the rest to be 0. > The code I wrote is returning the following error message: > > Error in if (mort[i, 4] != NA) mort[i, 8] <- 0 else if (mort[i, 4] == >: > missing value where TRUE/FALSE needed > > The code is as follows: > > for(i in 1:length(mort[,4])) > { > if(mort[i,4] != NA) mort[i,8] <- 0 > else if(mort[i,4] == NA) mort[i,8] <- 1 > } > > I'd appreciate any advice or recommendations as to a better way of > achieving this. > > Thanks > Gillian
I think the following should do what you want, provided the column mort[,8] exists: mort[,8] <- 0 mort[is.na(mort[,4]),8] <- 1 Incidentally, tests like "== NA" or "!= NA" can produce unexpected results! Use is.na() instead: tmp<-NA ## [1] NA tmp==NA ## [1] NA tmp!=NA ## [1] NA if(tmp==NA) 1 else 2 ## Error in if (tmp == NA) 1 else 2 : ## missing value where TRUE/FALSE needed if(TRUE) 1 else 2 ## [1] 1 is.na(tmp) ## [1] TRUE if(is.na(tmp)) 1 else 2 ## [1] 1 if(!is.na(tmp)) 1 else 2 ## [1] 2 Best wishes, Ted. -------------------------------------------------------------------- E-Mail: (Ted Harding) <[EMAIL PROTECTED]> Fax-to-email: +44 (0)870 094 0861 Date: 07-May-05 Time: 14:46:19 ------------------------------ XFMail ------------------------------ ______________________________________________ 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