Dear Duncan and Hadley,

I stumbled across the NA behavior of subset a little while ago and thought it 
might do the trick. But my common usage case is not getting a subsetting sans 
NAs, but setting values in the whole dataframe. 

So I need T/F at each row, not just the list of rows that match the subset of 
matching cases...

How would you do this with subset?

   data[data$YOB < 1908 & !is.na(data$YOB), "Age"]=NA

My %<% idea extends the vocabulary established by %in%, and works in the same 
grammatical situation.

here's a real example

# Fix missing T2 sex for same sex pairs...

twinData[twinData$Age %<% 12, "flynnEffect"] = FALSE # only set flynn F for 
people under 12, not inc NAs

Addressing Duncan's point about returning a logical array... the %<% function 
should be:

"%<%" <- function(table, x){
        lessThan = table < x
        lessThan[is.na(lessThan)] = FALSE
        return(lessThan)
} 

This also works for matrices as it should

> x = matrix(c(1:10,NA,12:20),nrow=2)
> x %<% 6
     [,1] [,2]  [,3]  [,4]  [,5]  [,6]  [,7]  [,8]  [,9] [,10]
[1,] TRUE TRUE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[2,] TRUE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE


On Sep 13, 2011, at 8:40 PM, Hadley Wickham wrote:

>> Because in coding, I often end up with big chunks looking like this:
>> 
>> ((mydataframeName$myvariableName > 2 & 
>> !is.na(mydataframeName$myvariableName)) & 
>> (mydataframeName$myotherVariableName == "male" & 
>> !is.na(mydataframeName$myotherVariableName)))
>> 
>> Which is much less readable/maintainable/editable than
>> 
>> mydataframeName$myvariableName > 2 & mydataframeName$myotherVariableName == 
>> "male"
> 
> Use subset:
> 
> subset(mydataframeName, myvariableName > 2 & myotherVariableName == "male")
> 
> (subset automatically treats NAs as false)
> 
> Hadley
> 
> -- 
> Assistant Professor / Dobelman Family Junior Chair
> Department of Statistics / Rice University
> http://had.co.nz/
> 

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to