The following provides a sample use if "is.na" in an context similar to yours, that also uses vector arithmetic, so you don't need a loop:

> tst <- (-2):2
> (tst2 <- 1+tst/(tst^2))
[1] 0.5 0.0 NaN 2.0 1.5
> (sel <- (tst2==0))
[1] FALSE  TRUE    NA FALSE FALSE
> sel[is.na(tst2)] <- FALSE
> tst2[sel] <- 123
> tst2
[1]   0.5 123.0   NaN   2.0   1.5

     hope this helps.  spencer graves

michael watson (IAH-C) wrote:

Some careful use of is.na() may help.
Either by using it to remove NA values or as part of the if statement.

Or:

my.wdir <- na.omit(dat$wdir)
for(i in 1:length(my.wdir)) {

#etc

-----Original Message----- From: [EMAIL PROTECTED] on behalf of [EMAIL PROTECTED] Sent: Fri 2/11/2005 9:34 PM To: [email protected] Cc: Subject: [R] NA's in if statement



        Hello,
        
        I am having trouble dealing with NA values in if statements such as:
        i<-1
        for(i in 1:length(dat$wdir)){
        if (dat$wspd[i]==0){
        dat$wdir[i]<-0
        }
        }
        
        I get the following error due to the presence of NS values in the data:
        Error in if (dat$wspd[i] == 0) { : missing value where TRUE/FALSE needed
        
        Sorry if this is an old question but I was unable to resolve this from 
the
        info on na.action etc. or old archives.
        
        Thank you for any suggestions,
        
        Vera Lindsay
        
        ______________________________________________
        [email protected] mailing list
        https://stat.ethz.ch/mailman/listinfo/r-help
        PLEASE do read the posting guide! 
http://www.R-project.org/posting-guide.html

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html



______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to