title: !is.na creates NAs in other columns
body: <p>In the midst of merging several data sets, I'm trying to remove all rows of a data frame that have a missing value for one particular variable (I want to keep the NAs in some of the other columns for the time being). I used the following line:</p>
  
  <pre><code>data.frame &lt;- data.frame[!is.na(data.frame$year),]
  </code></pre>
  
  <p>This successfully removes all rows with NAs for <code>year</code>, (and no others), but the other columns, which previously had data, are now entirely NAs. In other words, non-missing values are being converted to NA. Any ideas as to what's going on here? I've tried these alternatives and got the same outcome:</p>
  
  <pre><code>data.frame &lt;- subset(data.frame, !is.na(year))
  
  data.frame$x &lt;- ifelse(is.na(data.frame$year) == T, 1, 0);
  data.frame &lt;- subset(data.frame, x == 0)
  </code></pre>
  
  <p>Am I using <code>is.na</code> incorrectly? Are there any alternatives to <code>is.na</code> in this scenario? Any help would be greatly appreciated!</p>
  
  <p><em><strong>Edit</em></strong> Here is code that should reproduce the issue:</p>
  
  <pre><code>#data
  tc &lt;- read.csv("http://dl.dropbox.com/u/4115584/tc2008.csv")
  frame &lt;- read.csv("http://dl.dropbox.com/u/4115584/frame.csv")
  
  #standardize NA codes
  tc[tc == "."] &lt;- NA
  tc[tc == -9] &lt;- NA
  
  #standardize spatial units
  colnames(frame)[1] &lt;- "loser"
  colnames(frame)[2] &lt;- "gainer"
  frame$dyad &lt;- paste(frame$loser,frame$gainer,sep="")
  tc$dyad &lt;- paste(tc$loser,tc$gainer,sep="")
  drops &lt;- c("loser","gainer")
  tc &lt;- tc[,!names(tc) %in% drops]
  frame &lt;- frame[,!names(frame) %in% drops]
  rm(drops)
  
  #merge tc into frame
  data &lt;- merge(tc, frame, by.x = "year", by.y = "dyad", all.x=T, all.y=T) #year column is duplicated in       this process. I haven't had this problem with nearly identical code using other data.
  
  rm(tc,frame)
  
  #the first column in the new data frame is the duplicate year, which does not actually contain years.   I'll rename it.
  colnames(data)[1] &lt;- "double"
  
  summary(data$year) #shows 833 NA's
  
  summary(data$procedur) #note that at this point there are non-NA values
  
  #later, I want to create 20 year windows following the events in the tc data. For simplicity, I want to remove cases with NA in the year column.
  
  new.data &lt;- data[!is.na(data$year),]
  
  #now let's see what the above operation did
  summary(new.data$year) #missing years were successfully removed
  summary(new.data$procedur) #this variable is now entirely NA's
  </code></pre>