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

______________________________________________
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