Thanks.

That works great!

> df <- data.frame(x=c(1,1,NA,NA,2), y=c('a','a','a','b','b'), 
> z=c(TRUE,FALSE,TRUE,FALSE,TRUE))
> cond1 <- 'x==1'
> cond2 <- 'x==1 & z'
> df
   x y     z
1  1 a  TRUE
2  1 a FALSE
3 NA a  TRUE
4 NA b FALSE
5  2 b  TRUE
> subset(df, subset = ifelse(is.na(eval(parse(text=cond1))), TRUE, 
> eval(parse(text=cond1))))
   x y     z
1  1 a  TRUE
2  1 a FALSE
3 NA a  TRUE
4 NA b FALSE
> subset(df, subset = ifelse(is.na(eval(parse(text=cond2))), TRUE, 
> eval(parse(text=cond2))))
   x y    z
1  1 a TRUE
3 NA a TRUE


----- Original Message -----
From: "S Ellison" <s.elli...@lgcgroup.com>
To: "Sebastien Bihorel" <sebastien.biho...@cognigencorp.com>
Sent: Monday, April 9, 2018 8:31:55 AM
Subject: RE: Question about subset

> Before I try to re-invent the wheel, I would like to know if one of the base 
> or
> recommended packages would contain a variant of the subset function that
> would consider missing values as true.

The subset argument to subset is something that evaluates to logical - a vector 
of True or False. 
If you wanted to treat missing values _in that_ as TRUE, wrap it in an ifelse:

ifelse(is.na(condition), TRUE, condition)

where condition can be a logical or an expression evaluating to logical.

S Ellison



*******************************************************************
This email and any attachments are confidential. Any use...{{dropped:8}}

______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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