[R] if one of 4 conditions is not satisfied
Marc Schwartz
marc_schwartz at comcast.net
Tue Jul 1 18:07:58 CEST 2008
on 07/01/2008 07:40 AM mysimbaa wrote:
> I'm trying to do realize the following:
> I have 4 condtions.
> If all conditions are satisfied I will paste("PASS")
> If any of these is not satisfied I will paste("FAIL"). But I have to paste
> the corresponding failure.
>
> ifelse is a good solution but for a 2 conditions. Maybe switch or something
> like this.
>
> Does anyone have an idea how to do?
>
> Thanks in advance.
> Adel
An easy way would be to have your condition results, which are
presumably TRUE/FALSE, in a vector such as:
Cond <- c(TRUE, FALSE, FALSE, TRUE)
Then you could use all() to check to see if they are 'all' TRUE:
> all(Cond)
[1] FALSE
Then use which() to get the index of the FALSE elements:
> which(!Cond)
[1] 2 3
If you have your test labels in a character vector, such as:
Cond.Vec <- c("Cond 1", "Cond 2", "Cond 3", "Cond 4")
You could then use:
if (all(Cond)) {
Out <- "PASS"
} else {
Out <- paste("FAIL:", paste(Cond.Vec[which(!Cond)],
collapse = " & "))
}
> Out
[1] "FAIL: Cond 2 & Cond 3"
See ?all and ?which
HTH,
Marc Schwartz
More information about the R-help
mailing list