[R] indexing with which, logical indexing, and missing values

Juliet Hannah juliet.hannah at gmail.com
Tue Jun 28 21:39:40 CEST 2011


I have a data frame in which missing values exist, and I need to
recode the string "missing" to a missing value. For the example, let's
assume I cannot do this while reading it in. Even though this has been
discussed extensively, I'm still a little confused about when to index
with "which" and when to use logical indexing.

Below is what I have done. Is there a more R-appropriate way to do this? Thanks.


# create data with missing values

myData <- head(mtcars)
myData[c(1,2),'cyl'] <- "missing"
is.na(myData[3,'cyl']) <- TRUE
myData[c(1,2,5),'disp'] <- "missing"
myData


# loop through columns to replace "missing"

myColNames <- colnames(myData)

for (myCol in myColNames) {
   NA_index <- which(myData[,myCol] =="missing")

    # which creates problems when no columns have "missing"

   if (length(NA_index) > 0) {
      is.na(myData[NA_index,myCol]) <- TRUE
   }
}

myData



More information about the R-help mailing list